循环命令

时间:2013-10-07 19:10:45

标签: c

我的代码假设循环执行命令,然后执行命令直到命令退出。当它运行时,我得到一个永无止境的循环。

void run(){
    char command[100][100], *p;
    int numOfArgs;
    while(1){
        p=&command[0][0];
        numOfArgs = 0;
        while(getchar()!= '\n'){
            while(getchar()!= ' '){
                *p=getchar();
                p++;    //increased to next char in string
            }
            *p='\0';
            numOfArgs++;    //increases number of strings
            p=&command[numOfArgs][0]; //References p to location 0 of next string
        }
        if(strcmp(command[0], "/*command*/") == 0){
            //Do command
        }

        if(strcmp(command[0], "exit") == 0)
            return;

        else printf("Not a valid command");
    }
 }

2 个答案:

答案 0 :(得分:3)

将第13行更改为

p=&command[numOfArgs][0];

您还需要使用\0终止命令。

答案 1 :(得分:0)

已经指出了实际问题,即没有终止空值,即“\ 0”。但只是详细说明会发生什么。

由于您通过char而不是sprintf或获取等来获取输入char,因此您的命令[index]不会以null结束。

由于没有终止null,strcmp,永远不会在正确的比较中终止,而是保持比较直到找到null 。因此,它总是导致不匹配并继续循环。