gpt4 book ai didi

c - fgets 不移动文件指针

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:52 25 4
gpt4 key购买 nike

我有一个可能相当简单的问题。我有一个文件 input.txt 是:

cat input.txt

testsuite1
test1
summary information of test
FAIL
testsuite2
test1
summary info ya
PASS

我正在编写一个程序,只是将这些字符串中的每一个读入变量并进行进一步处理。最好的方法是什么?我目前正在做:

main() {
FILE *fp;
char testsuite[100],testname[100],summary[100],result[100];
fp = fopen("input.txt", "r");
while(1) {
if(fgets(testsuite,99,fp) == NULL)
{
ferror(fp);
break;
}
if(fgets(testname,99,fp) == NULL)
{
ferror(fp);
break;
}
if(fgets(summary,99,fp) == NULL)
{
ferror(fp);
break;
}
if(fgets(result,99,fp) == NULL)
{
ferror(fp);
break;
}
printf("testsuite: %s testname:%s summary:%s result:%s \n",testsuite,testname,summary,result);
}


fclose(fp);
}

有更好的方法吗?我目前面临的问题是,如果 input.txt 包含哪怕一个空白行,空白 like 被读入一个变量。避免它的最佳方法是什么?

谢谢!

最佳答案

您应该编写自己的函数来跳过空行(例如称为 getline())并使用它代替 fgets():

char *getline(char *buf, int size, FILE *fp)
{
char *result;
do {
result = fgets(buf, size, fp);
} while( result != NULL && buf[0] == '\n' );
return result;
}

您现在可以优化该函数以跳过仅包含空格或任何您需要的行。

关于c - fgets 不移动文件指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165828/

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