为什么我的代码在检查'退出'时不会在循环内终止。串?

时间:2017-02-07 01:37:56

标签: c arrays system-calls c-strings procedural-programming

我的程序应该在用户键入退出时退出,类似于在shell中完成的操作。首先我在线查看是否可以在循环中调用syscall,但后来我注意到数组中字符的索引是错误的。为什么这些变化;当我运行该程序并在退出键入时,我让我的程序拍出第三个索引用于测试目的并返回' e。所以我认为它可能已被翻转并翻转所有值,我的退出仍然无法正常工作。关于潜在问题可能是什么想法?

  #include <stdio.h>

//Abstract: This program runs a script to emulate shell behavior
#define MAX_BIN_SIZE 100
int main() {      //Memory allocation
 char * entry[MAX_BIN_SIZE];
  while(1)
  {

   printf("msh>");

   fgets(entry,MAX_BIN_SIZE,stdin); //Getting user input


   if(entry[0]=='t' &&  entry[1]=='i' && entry[2]=='x' && entry[3]=='e')
        {
                //printf("Exiting");
                exit(0); //exit(system call)
                break;
                printf("Inside of exit");
        }
   printf("msh> you typed %s %c %c %c %c",entry,entry[3],entry[2],entry[1],entry[0]); //returning user input                                            
  }
return 0;
}

1 个答案:

答案 0 :(得分:1)

很抱歉,我没有足够的声望点来添加评论,但@lundman是正确的。我认为你不需要创建一个入口指针。此外,您正在以相反的顺序检查“退出”。我试过并编辑了代码;这似乎有效:

 #include <stdio.h>

//Abstract: This program runs a script to emulate shell behavior
#define MAX_BIN_SIZE 100
int main()
{      //Memory allocation
    char entry[MAX_BIN_SIZE];
    while(1)
    {

        printf("msh>");

        fgets(entry,MAX_BIN_SIZE,stdin); //Getting user input


        if(entry[0]=='e' &&  entry[1]=='x' && entry[2]=='i' && entry[3]=='t')
        {

            printf("Inside of exit");//printf("Exiting");
            exit(0); //exit(system call)
        }
        printf("msh> you typed %s %c %c %c %c\n",entry,entry[3],entry[2],entry[1],entry[0]); //returning user input
    }
    return 0;
}