我试图将此循环转换为for循环,但我无法让它工作,它在C中。
while(args[argCounter]){
if(!strcmp(args[argCounter], "|")){
args[argCounter] = NULL;
cmdbegin[child] = argCounter + 1;
child++;
}
argCounter++;
}
答案 0 :(得分:2)
我会将其翻译如下:
for (int argCounter = 0 ; args[argCounter] ; argCounter++){
if(!strcmp(args[argCounter], "|")){
args[argCounter] = NULL;
cmdbegin[child++] = argCounter + 1;
}
}
我添加了您未展示的argCounter
的声明和初始化。转换非常机械化:
argCounter++
已移至for
循环标题的第三个“隔离专区”child++
移到了作业中以稍微缩短代码;这是可选的。答案 1 :(得分:1)
或者
char **tmp = args + argCounter;
for(;*tmp;tmp++)
{
++argcounter;
if (!strcmp(*tmp, "|")) {
*tmp = NULL;
cmdbegin[child++] = argCounter;
}
答案 2 :(得分:0)
您的代码中未指定argCounter
的初始值。这是转换:
for (; args[argCounter]; argCounter++) {
if (!strcmp(args[argCounter], "|")) {
args[argCounter] = NULL;
cmdbegin[child] = argCounter + 1;
child++;
}
}
如果循环从0
开始,并且您希望argCounter
循环为for
,则此处为C99版本:
for (int argCounter = 0; args[argCounter]; argCounter++) {
if (!strcmp(args[argCounter], "|")) {
args[argCounter] = NULL;
cmdbegin[child] = argCounter + 1;
child++;
}
}