我有一个内容如下所示的文件。
fscanf
我需要使用firstName = John
middleName = Antony
lastName = Mathew
Country = Australia
来读取文件中的内容。
输出应为:
fscanf
在fscanf(fp, "[%[^]]",firstName)
中使用哪种格式在单独的字符串中获取firstName,middleName,lastName和country?
目前{{1}}正确地给出了firstName。
答案 0 :(得分:1)
类似于@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可以形成所需的输出格式字符串。
答案 1 :(得分:0)
{{1}}
也可以通过阅读字符流并覆盖所有空格来实现,' ['和']'。