使用fscanf从文件中读取格式化的字符串

时间:2015-08-04 09:55:29

标签: c file scanf

我有一个内容如下所示的文件。

fscanf

我需要使用firstName = John middleName = Antony lastName = Mathew Country = Australia 来读取文件中的内容。

输出应为:

fscanf

fscanf(fp, "[%[^]]",firstName)中使用哪种格式在单独的字符串中获取firstName,middleName,lastName和country?

目前{{1}}正确地给出了firstName。

2 个答案:

答案 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}}

也可以通过阅读字符流并覆盖所有空格来实现,' ['和']'。