我使用以下循环读取输入
do
{
i=0;
do
{
line[i]=fgetc(stdin);
i++;
}while(i<100 && line[i-1]!='\n' && line[i-1]!=EOF);
//Parsing input
}while(line[i-1]!=EOF);
我的输入看起来像这样
$GPRMC,123519,A,4510.000,N,01410.000,E,010.0,010.0,120113,003.1,W*4B
$GPRMC,123520,A,4520.000,N,01650.000,E,010.0,010.0,230394,003.1,W*4B
$GPRMC,123521,A,4700.000,N,01530.000,E,010.0,010.0,230394,003.1,W*4F
$GPRMB,A,0.66,L,001,002,4800.24,N,01630.00,E,002.3,052.5,001.0,V*1D
$GPGGA,123523,5000.000,N,01630.000,E,1,08,0.9,100.0,M,46.9,M,,*68
所以我的问题是,在最后一行之后,当它应该读取 EOF 时,它停止在 line 上line[i]=fgetc(stdin);
。即使我从文件复制该输入并将其粘贴到终端,或者即使我在终端中运行该程序< input.txt
。但是当我在终端中运行它时,将输入粘贴到那里,然后手动添加EOF
(^D)而不是停止..有人可以吗告诉我哪里有问题?