c - 在c中使用逗号分隔值读取文件

标签 c file-io

我有一个文本文件,格式为字符串、字符串、数字

职业、居住、工资

既然它是逗号分隔的,我该如何读入它?我有以下代码

int t;
char occupation[20];
char residence[20];
int salary;

fp = fopen(argv[1],"r");

while(fgets(buffer,sizeof(buffer),fp) != NULL) {
    t = sscanf(buffer,"%20[^,],%20[^,],%d",occupation,residence,&salary);
    if (t == 3)
    {
        addToFront(linkedList,salary,occupation,residence);
    }
}

我知道我的 addToFront 不是问题,因为如果我用类似的东西调用它:

addToFront(linkedList,50000,"plumber","miami");

效果很好。

最佳答案

该代码应该可以工作,但请注意,如果您将 20 个字符读入 20 个字符的声明空间,则没有空间用于尾随 0。因此,声明您的变量比您期望的长一倍(char 占用[21];)

目前还不清楚你的缓冲区是如何声明的 - 是这样吗?

实际上,您根本不需要缓冲区,您可以使用 fscanf,它与 sscanf 相同,只是它采用文件指针而不是缓冲区。

关于c - 在c中使用逗号分隔值读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163663/

相关文章:

c - 从系统调用刷新浏览器

linux - 在 vim 中打开 100 个文件

c++ - 将对象保存到二进制文件中的有效方法

c - 从 c/cpp 文件中获取所有函数的名称

c - 下载控制板软件模拟器

python - 使用 python 2.7 从 block 中的文件进行 base64 编码、解码

fopen可以用来打开url吗

java - 使用站点名称保存文件

c - ccache "called for link"是什么意思

c - 位运算符解释