在C语言中从文本文件中读取逗号分隔的值

4

我是个编程新手,这是我的一部分作业。我尝试读取一个逗号分隔的文本文件,格式如下:

 [value1], [value2]

在C语言中,我试图将它们作为字符串和整数参数传递给函数。我尝试使用sscanf()甚至使用fgetc()来进行操作,但没有得到太多帮助。逗号后面的空格证明是一个问题。
示例:
 2001, 102
 1314, 78
 0410, 910
 ...

请帮我一下。
谢谢。

5
请发布您尝试过的内容。 - ani627
可能是重复问题 - 请查看:https://dev59.com/6Wcs5IYBdhLWcg3wXixD - yossico
2
@SouradeepSinha 为什么不在询问之前再试一次呢?如果这是一个作业,你应该从中学习... - rubber boots
2
这个问题似乎不符合主题,因为它只是要求提供代码,并没有尝试解决它。 - Almo
while(2==fscanf(fp, "%d,%d", &value1, &value2)){ //do stuff} - BLUEPIXY
显示剩余8条评论
1个回答

3
感谢@rubberboots的帮助。
#include <stdio.h>
#include <string.h>

void main()
{
    FILE *fp = fopen("user.dat", "r");
    const char s[2] = ", ";
    char *token;
    int i;
    if(fp != NULL)
    {
        char line[20];
        while(fgets(line, sizeof line, fp) != NULL)
        {
            token = strtok(line, s);
            for(i=0;i<2;i++)
            {
                if(i==0)
                {   
                    printf("%s\t",token);
                    token = strtok(NULL,s);
                } else {
                    printf("%d\n",atoi(token));
                }       
            }
        }
        fclose(fp);
    } else {
        perror("user.dat");
    }   
}   

用户数据文件:

1000,76

0095,81

2910,178

0001,1

输出结果:

1000 76

0095 81

2910 178

0001 1


好奇,为什么打印读取的第一个数字的字符串版本并使用第二个数字的数字版本?打印两个都作为字符串或两个都作为数字不更一致吗? - chux - Reinstate Monica
作业的烦恼。对我来说也没太多意义。我猜教授想让我们在一个printf语句中学习并解决两个问题。:P - Souradeep Sinha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接