【发布时间】:2015-02-22 19:26:27
【问题描述】:
fgets() 不打印打开文件的第一行。 这是我做的代码,
#include <stdio.h>
int main(int argc, char* argv[])
{
float num;
char const* const filename=argv[1];
FILE* file=fopen(filename,"r");
char line[256];
int j=0;
if(file!=NULL)
{
while(fgets(line,sizeof(line),file)!=NULL){
for(j=0; j<2;j++)
{
if(j==0)
{
fscanf(file,"%f",&num);
printf("%f \t",num);
}
else if(j==1)
{
fscanf(file,"%f",&num);
printf("%f \n",num);
}
}
}
fclose(file);
}
}
我得到的输出为,
650.000000 699.000000
99.000000 132.000000
150.000000 272.000000
128.000000 291.000000
302.000000 331.000000
95.000000 199.000000
而不是,
130.000000 186.000000
650.000000 699.000000
99.000000 132.000000
150.000000 272.000000
128.000000 291.000000
302.000000 331.000000
95.0000000 199.000000
我没有得到第一行是我的问题。请帮我解决这个问题。
【问题讨论】:
-
正确格式化您的代码。
fgets()从不打印任何东西。 -
你从未使用过
line。 -
整个
while循环可以替换为while ( fscanf(file, "%f %f", &num1, &num2) == 2 ) { printf("%f\t%f\n", num1, num2); } -
thnx thnx thnx 它在更改 while 循环后工作.. :)