在我的C程序中,fgets
沒有讀取任何數據。請看下面的代碼:奇怪的C代碼行爲(fgets函數)
#include <stdio.h>
int main()
{
char string[50];
int marks,i,n, limit;
printf("Enter Limit : \n");
scanf("%d", &limit);
FILE *fptr; fptr=(fopen("string.txt","w"));
if(fptr==NULL){
printf("Error!");
return 0;
}
printf("Enter a string : \n");
fgets(string, sizeof(string), stdin);
fwrite(string, 1, sizeof(string), fptr);
fclose(fptr);
return 0;
}
我進入限制後,程序將顯示「輸入一個字符串」,只是退出(輸入任何數據之前)。如果我刪除scanf("%d", &limit);
聲明它工作正常。另外,如果在fgets
以上添加getchar();
聲明,它將正常工作。有人知道這個問題背後的原因嗎?
我改變了這樣的代碼。 scanf(「%d」,&limit);但現在輸出如下:1.輸入極限2. 3(註釋:輸入限制並按Enter鍵)3. sswew(註釋:我必須再次輸入此處並再次按Enter)4.輸入一個字符串(註釋:在輸入任何程序出口之前) – Vaquita
我不知道爲什麼這不適合我。在'%d'後面給出額外的空間時,我必須按下額外的字符,這會使程序終止。 – haccks
Joachim你能檢查一下嗎?我正在使用Mac OS X 10.8和CC Compiler。以上解決方案不適合我。 – Vaquita