나는 이것을 위해 fgets()
을 사용하고 있습니다. 그러나 이전 루프에서 현재 루프에 남은 부분이있는 것으로 보입니다. 그러나 나는 루프 안에 input
을 선언한다. 그래서 모든 루프마다 새로운 배열이 아닌가?루프에서 사용자 입력을 읽음
int nn=0;
while (1) {
printf("%d\n", nn);
if(++nn==3)break;
char input[101];
char* pch;
printf("|%s|\n", input);
fgets(input, 101, stdin);
input[strlen(input) - 1] = '\0';
printf("|%s|\n", input);
pch = strtok (input," ");
if(!strcmp(pch, "l")) {
pch = strtok (NULL, " ");
readFile(pch, rec, N, buckets, towns);
}
else if(!strcmp(pch, "e")) {
printf("Exiting...\n");
return;
}
else {
printf("Unknown command. Exiting...\n");
return;
}
}
출력 :
0
||
l t200.bin
|l t200.bin|
Records found in file 200
1
|l|
l t200.bin
|l t200.bin|
Records found in file 200
2
나는 새 명령이 먹다 남은 음식이 input
에 보관 특히, 이전에 휩쓸 리게 될 것이다 봉사 할 걱정입니다.
초기화되기 전에'input'을 출력합니다; 'NULL '을 반환하지 않는 한'fgets'를 호출 한 후에 만 의미있는 내용을 갖습니다 (확인하지 않음). –
'char input [101];'->'char input [101] = ""; – BLUEPIXY
"은 모든 루프에서 새로운 배열이 아닌가?" - 개념적으로 만; 실제로는 대부분의 구현에서 동일한 메모리입니다. –