gpt4 book ai didi

c - 在 C 中使用 fgets 跳过空行

转载 作者:行者123 更新时间:2023-11-30 16:56:49 25 4
gpt4 key购买 nike

我的程序用于显示 .DAT 文件中的数字。每行有 2 个字段。例如:.dat文件的内容:

1 2.2
3 10.9

10 100

.DAT 文件中有 4 行。第一行中,field1 为“1”,field2 为“2.2”,依此类推。第 3 行是一个空行。

我的程序用于以与我们在 .DAT 文件中看到的相同格式显示数字,即:

1 2.2
3 10.9

10 100

我所有的编程都是在 Ubuntu 上进行的。在gcc中编译并运行程序。

我的代码如下所示:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>

int main()
{
FILE *fp = fopen("number.dat", "r");
if (fp == NULL)
{
fprintf(stderr, "ERROR: cannot open the file\n");
return 1;
}

char *field1 = NULL;
char *field2 = NULL;

char line[100];
while(fgets(line, 100, fp)!=NULL)
{
if(line[0] != '\n')
{
field1 = strtok(line, " ");
field2 = strtok(NULL, " ");

printf("%s ", field1);
printf("%s", field2);
}
else
{
printf("Blank Line!");
}
}
fclose(fp);

return 0;
}

但是,我运行程序后,结果如下所示:

1 2.2
3 10.9

(null)10 100

我不明白为什么显示“(null)”而不是“Blank Line!”。有人可以帮我找出问题所在吗?

最佳答案

使用 if(line[0] != '\r' && line[0] != '\n') 而不是 if(line[0] != '\n')

关于c - 在 C 中使用 fgets 跳过空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39803553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com