如何使用scanf\fscanf读取一行并解析为变量?

Ran*_*anH 4 c file-io file scanf

我正在尝试在每一行中读取使用以下格式构建的文本文件:

字符*,字符*,诠释

即:

AAAAA,dfdsd,23

bbbasdaa,DDD,100

我想使用fscanf从文件中读取一行,并自动将该行解析为varilables string1,string2,intA

这样做的正确方法是什么?谢谢

cas*_*nca 7

假设你有:

char string1[20];
char string1[20];
int intA;
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

fscanf(file, "%19[^,],%19[^,],%d\n", string1, string2, &intA);
Run Code Online (Sandbox Code Playgroud)

%[^,]读取一串非逗号字符并在第一个逗号处停止.19是要读取的最大字符数(假设缓冲区大小为20),因此您没有缓冲区溢出.

  • 对.欢迎来到C风格字符串操作的乐趣."正确"的答案是使用类似于C++的std :: string的东西."懒惰"的答案是热门的char foo [1000]. (2认同)