我有一个内容如下所示的文件。
[John][Antony][Mathew] Australia
我需要使用fscanf
从文件中读取内容。
输出应该是:
firstName = John
middleName = Antony
lastName = Mathew
Country = Australia
fscanf 中使用什么格式来获取单独字符串中的名字、中间名、姓氏和国家/地区?
目前fscanf(fp, "[%[^]]",firstName)
正确给出了firstName。
最佳答案
类似于@BLUEPIXY评论“[%[^]]][%[^]]][%[^]]]%[^\n]%*c”
。
由于数据肯定是每行的,所以先读取一行,然后解析它。
所需的格式为 "[%99[^]]]"
,表示 1) 扫描 '['
2) 扫描最多 99 个非 ]
字符并形成字符串 3) 扫描']'
。
#define N 100
#define FMT "[%99[^]]]"
#define FMTCTY " %99[^\n]"
char firstName[N], middleName[N], lastName[N], Country[N];
char buf[4*N + 10];
while (fgets(buf, sizeof buf, fp) != NULL) {
if (4 != sscanf(buf, FMT FMT FMT FMTCTY, firstName, middleName, lastName, Country)) {
break;
}
foo(firstName, middleName, lastName, Country);
}
自信的OP可以形成需要的输出格式字符串。
关于c - 使用 fscanf 从文件中读取格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31806132/