0

ユーザーに入力を求めようとしていますが、ユーザーが入力するとexitプログラムが終了するようにする必要があります。

これが私が持っているものですが、何らかの理由で機能していません:

int main(void) {
  char input[100];

  printf("Enter: ");

  while(fgets(input, 100, stdin)) {
    if(strcmp("exit", input) == 0) {
      exit(0);
    }
  }
}

なぜ終了しないのですか?

4

3 に答える 3

2

あなたはほとんどすべてを正しくやっています

問題は、"fgets()" が末尾の改行を返し、"enter\n" != "enter" を返すことです。

提案:

代わりに strncmpを使用します。if (strncmp ("enter", input, 5) == 0) {...}

于 2013-09-23T00:29:53.970 に答える
0

入力に末尾の '\n' が含まれているため

  while(fgets(input, 100, stdin)) {
    char *p=strchr(input, '\n');
    if(p!=NULL){
        *p=0x0;
    ]
    if(strcmp("exit", input) == 0) {
      exit(0);
    }
于 2013-09-23T00:30:45.487 に答える