gpt4 book ai didi

c - 文件扫描多行时跳过行

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

只要文件采用这种格式,此代码就会读取并打印该文件

word,12,34
words,40,20
another,20,11

如果它之间有一个空行,我该如何让它做同样的事情,因为现在它只会给我一个段错误

word,12,34

words,40,20

another,20,11



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
FILE *pdata;
char buffer[1000];
char *token, *del=",";
int value1;
double value2;


pdata = fopen ("file.data", "r");

if(pdata == NULL)
{
printf("unable to open file \n");
exit(1);
}

while( fgets(buffer, sizeof(buffer), pdata) != NULL )
{
token = strtok(buffer, del);
value1 = atoi( strtok(NULL, del) );
value2 = atof( strtok(NULL, del) );

printf("%s is %.3lf\n", token, value1 + value2);

}

fclose( pdata );


return 0;
}

请帮忙

最佳答案

我要做的两个改变:

char *del = ", "; // test for either space or comma

并且(根据我之前对问题的评论):

while( fgets(buffer, sizeof(buffer), pdata) != NULL )
{
char *temp;
token = strtok(buffer, del);
if (token != NULL) {
temp = strtok(NULL, del);
if (temp) value1 = atoi( temp );
temp = strtok(NULL, del);
if (temp) {
value2 = atof( temp );
printf("%s is %.3lf\n", token, value1 + value2);
}
}

如果没有找到 token ,strtok 将返回 NULL。我猜,将 NULL 字符串传递给 atoi 是导致 seg 错误的原因。像这样,我们绝对确保这种情况不会发生。我对此进行了测试,它有效。

关于c - 文件扫描多行时跳过行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128187/

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