我试图从 C 中的文本文件中读取一行,但输出错误。我想我的代码中的分隔符错了。有人可以帮忙吗?
text:
你好,世界,1,2,再见
输出:
hello world 12576 117453344 bye
typedef struct structure {
char hello[25];
char world[25];
int num1;
int num2;
char bye[25];
} Hello;
主:
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include "structure.h"
using namespace std;
int main(int argc, char **argv) {
char line[25];
FILE *fp;
fp = fopen("text.txt", "r");
Hello c;
while (fgets(line, sizeof(line), fp) != NULL) {
sscanf(line, "%[^','],%[^','],%[^','],%[^','],%s",
c.hello, c.world, &c.num1, &c.num2, c.bye);
}
printf("%s %s %d %d %s", c.hello, c.world, &c.num1, &c.num2, c.bye);
return 0;
}
答案 0 :(得分:3)
不要使用%[^',']
来读取整数。应该使用%d
,并且只是忽略','
中字符串使用说明符%[^,]
中的sscanf
。
并检查其返回值。