1

これは私が分割しようとしている行で、最初から、:空白を食べ、それ以降は次のようになります。

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++;
}

2番目のパラメーターは保存されません。結果は次のとおりです。

file1: 
file2,file3,file4

それ以外の:

file1 file2,file3,file4
4

2 に答える 2

3

まず、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
于 2012-11-13T07:56:53.157 に答える
0
while(fscanf(fp,"%[^:]: %s",map[i].name, map[i].filesNeeded) == 2)
{
   printf("%s %s\n",map[i].name, map[i].filesNeeded);
   i++;
}

私はコードを変更しました。あなたはそれのような試みをすることができます。

于 2012-11-13T09:54:32.407 に答える