我有一个格式如下的文件
A New Day Has Come (Radio Remix); 239
Ten Days; 227
Goodbye's (The Saddest Word); 198
Prayer; 313
I Surrender; 271
At Last; 209
Sorry For Love; 301
我如何使用 fscanf
获取字符串以及分号后面的数字?我试过了
for(track = 0; track < albums[size].num_tracks; ++track){
fscanf(fileptr,"%s;%i",albums[size].tracks[track].name,albums[size].tracks[track].length);
//print out the tracks
printf("Track number %i : %s", track, &albums[size].tracks[track].name);
}
但是,当 printf 发生时,不会打印整个字符串,而是像
Track number 0 : A
Track number 1 : New
Track number 2 : Day
etc...
如您所见,出于某种原因,代码正在捕获单个单词,而不是分号之前的整个字符串。我将使用哪个表达式来获取整个字符串?拼写编辑
最佳答案
虽然 fscanf
可能不是在这种情况下使用的最佳函数,但形式上仍然可以使用它来抓取以 ;
结尾的字符串,方法如下:格式说明符
fscanf(fileptr, "%[^;];%i",
albums[size].tracks[track].name,
&albums[size].tracks[track].length);
不过,这将要求输入文件遵守非常严格的格式要求。另请注意,如果您的 albums[size].tracks[track].length
是 int
对象,则 &
运算符需要在 专辑[大小].轨道[轨道].长度
。当在 fscanf
中使用 %i
格式说明符时,它需要一个指向 int
的指针作为参数。
此外,您的 printf
看起来不正确。应该是
printf("Track number %i : %s", track, albums[size].tracks[track].name);
albums[size].tracks[track].name
之前的 &
不应该存在。
关于c - 我将如何使用 fscanf 捕获字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184508/