簡體   English   中英

c fscanf按模式保存

[英]c fscanf save by pattern

這是我試圖分開的線,從開始直到: ,吃任何空格,從那里開始:

file1: file2,file3,file4

我的代碼是:

while(fscanf(fp,"%s: %s",map[i].name, map[i].filesNeeded) == 1)
{
   printf("%s %s\n",map[i].name, map[i].filesNeeded);
   i++;
}

永遠不會保存第二個參數。 結果是:

file1: 
file2,file3,file4

代替:

file1 file2,file3,file4

首先,fscanf將增加匹配的每個項目的回報,因此它應該是== 2。

此外,您將需要使用%[^:]而不是%s,因為%s將不知道何時停止。

int main(int argc, char** argv)
{
  char test[] = "one: two,three";

  char part1[20];
  char part2[20];

  printf("%i\n", sscanf(test, "%[^:]: %s", part1, part2));

  printf("%s %s\n", part1, part2);
}

輸出:

2
one two,three
while(fscanf(fp,"%[^:]: %s",map[i].name, map[i].filesNeeded) == 2)
{
   printf("%s %s\n",map[i].name, map[i].filesNeeded);
   i++;
}

我修改了代碼。你可以嘗試一下這樣的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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