簡體   English   中英

使用fscanf從文件中讀取格式化的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM