我正在尝试解析一个 C 语言文件,该文件由一组数字(每行一个)组成。每组之间用逗号分隔。由于某种原因,我得到了不正确的输出。
输入示例:1,2,4,8,55,777 输出:一堆看起来是内存地址的东西。当我打印出字符串时,它读取的不是 55 或 777(或任何超过两位数的数字)。
int * parseFile(char *input, int *set, int line)
{
char buf[BUF_SIZE];
char *token = (char *) malloc(10 * sizeof(char));
int i;
FILE *f = fopen(input, "r");
for (i = 1; i < line; i++)
fgets(buf, BUF_SIZE, f);
memset(buf, 0, BUF_SIZE); // Clear the buffer.
i = 0;
if (fgets(buf, BUF_SIZE, f) != NULL) {
token = strtok(buf, ",");
set[i] = atoi(token);
i++;
while (set[i] != 0) {
printf("%d\n", set[i]);
set[i] = atoi(token);
i++;
token = strtok(NULL, ",");
}
}
fclose(f);
return set;
}
最佳答案
您可以使用fscanf()
在循环中使用以下fscanf()
,直到到达文件末尾:
int a,b,c,d,e,x;
while (fscanf(f, " %d , %d , %d , %d, %d , %d", &a, &b, &c, &d, &e, &x) != EOF) {....}
关于c - 在 C 中解析逗号分隔的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682266/