gpt4 book ai didi

c - 使用 fgets && sscanf 从数组中读取

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

我有一个如下所示的文本文件:

C M 2/1/2015 18280 "2107070770"
C U 2/1/2015 18300 "2107070770"

文本文件有多行。我正在尝试存储将每一行放入一个字符串数组中,然后存储每个值进入变量,我想一起工作。(我打开fopen文件成功)

我用以下方式存储每一行​​:

char line[50];
char *lines[40];
char *eof ;
int i ;
while( (eof = fgets(line, 50, in)) != NULL )
{
lines[i] = strdup(eof);
i++;
}

然后,我试图通过以下方式将每个值存储到变量中:

for( j = 0; j <= 39 ; j++)
{
sscanf( lines[j], "%c %c %d/%d/%d %d %s", &(operation), &(destination), &(day) , &(month) , &(year) , &(name)) ;

/*printf("%s\n", lines[j]);*/
}

因此,我可以分别处理每一行。我的代码成功地将每一行存储到数组中,但是之后添加 sscanf 函数它停止工作而没有任何输出。我做错了什么?

最佳答案

对于行

C U 2/1/2015 18300 "2107070770"

2015 年之后,您缺少整数 18300。您在格式字符串中有一个格式说明符,但没有相应的变量来存储它。

运行后,目的地,日,月,年,missing_variable,姓名

//so the right one will be
// assuming name is a char*

int my_int = 0;
for( j = 0; j <= 39 ; j++)
{
sscanf( lines[j], "%c %c %d/%d/%d %d %s",
&(operation), &(destination), &(day) , &(month) , &(year),
&(my_int), name) ;

/*printf("%s\n", lines[j]);*/
}

关于c - 使用 fgets && sscanf 从数组中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763713/

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