好吧,我確定有些東西我在這裏失蹤,但我不知道它是什麼,我希望有人能幫我弄明白。從fgetc()讀取輸入並使用printf()打印
我正在閱讀命令行的輸入內容,並且正在編寫一個使用fgetc()來執行此操作的函數。然而,功能上看似膚淺的變化使其表現完全不同。
這是main()函數:
while(1)
{
char* cmd = malloc(sizeof(char) * 80);
printf("Enter command: ");
read_flush(cmd, 80);
printf("%s\n", cmd);
free(cmd);
}
這是()read_flush的版本之一:
int read_flush(char* buffer, int count)
{
int i, c;
for(i = 0; i < count; i++)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
}
return i;
}
這一個工作正常。你輸入輸入,它會將其吐出。 但是,這個下一個版本會導致main一遍又一遍地打印「Enter command:」而不給用戶輸入輸入的機會。
int read_flush(char* buffer, int count)
{
int i, c;
while(i < count)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
i++;
}
return i;
}
fgetc()我有什麼微妙之處嗎?
哇,哎呀。是的,就是這樣。 – user1227489 2012-02-23 05:28:15
保持總是初始化變量的習慣是很好的,特別是在處理指針時。它會爲你節省很多頭痛的道路。 – 2012-02-23 14:41:00