[英]Using fscanf for reading formatted string from file
我有一个内容如下的文件。
[John][Antony][Mathew] Australia
我需要使用fscanf
从文件中读取内容。
输出应为:
firstName = John
middleName = Antony
lastName = Mathew
Country = Australia
在fscanf
使用哪种格式来在单独的字符串中获取firstName,middleName,lastName和country?
当前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可以形成所需的输出格式字符串。
char buf[1024];
FILE* fp = fopen("file.in", "r");
fgets(buf, sizeof(buf), fp);
fclose(fp);
// substitute '[' and ']' with a space
sscanf(buf, "%s%s%s%s", firstName, middleName, lastName, Country);
也可以通过读取字符流并越过所有空格'['和']'来完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.