程式大概如下圖所示,反復輸入ctrl+z,回圈結構并無法如期跳出:
while(fgets(str,10000,stdin)!=EOF){
......
}
請教各位大神,如何解決!(題目大致需要打回車輸入下一串輸入,打eof結束輸入,所以考慮了用fgets從鍵盤輸入)
uj5u.com熱心網友回復:
這是函式的部分#include <stdio.h>
#include <stdlib.h>
struct Record{
char fname[100];
char lname[100];
char nname[100];
char age[100];
char gender[100];
char shl[100];
char dep[100];
}record[10000];
int main()
{
char str[10000];
int z=0;
while(fgets(str,10000,stdin)!=EOF){
int len=strlen(str);
int x=0;int y;
//fname
y=0;
for(x=0;x<len;x++){
if(str[x]!=','){
record[z].fname[y]=str[x];
y++;
}
else{
break;
y=0;
}
}
x++;
printf("x:%d\n",x);
printf("fname is right\n");
printf("record[z].fname:%s\n",record[z].fname);
z++;
}
uj5u.com熱心網友回復:
fgets(str,10000,stdin)!=NULL注意fgets的回傳值
uj5u.com熱心網友回復:
查清楚函式再用fgets 失敗不是回傳EOF
https://zh.cppreference.com/w/c/io/fgets
uj5u.com熱心網友回復:
如果成功,該函式回傳相同的 str 引數。如果到達檔案末尾或者沒有讀取到任何字符,str 的內容保持不變,并回傳一個空指標。如果發生錯誤,回傳一個空指標。 在讀字符時遇到end-of-file,則eof指示器被設定,如果還沒讀入任何字符就遇到這種情況,則stream保持原來的內容,回傳NULL; 如果發生讀入錯誤,error指示器被設定,回傳NULL,stream的值可能被改變。”轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107184.html
標籤:新手樂園
上一篇:cc1plus.exe: error: unrecognized command line option "-fpch-preprocess"
