用于格式化文件中字符串的sscanf

用于格式化文件中字符串的sscanf,c,string,output,scanf,imperative,C,String,Output,Scanf,Imperative,作为家庭作业的一部分,我需要加载一个包含以下格式数据的文件: R1 Fre 17/07/2015 18.00 FCN - SDR 0 - 2 3.211 R1 Lor 18/07/2015 16.00 FCM - VFF 2 - 0 7.232 为此,我使用fgets将字符串存储在临时字符串中,然后使用sscanf在逐行遍历文件时格式化字符串 while(fgets(temp, MAX_LINE_SIZE,

作为家庭作业的一部分,我需要加载一个包含以下格式数据的文件:

R1  Fre     17/07/2015   18.00     FCN - SDR     0 - 2     3.211   
R1  Lor     18/07/2015   16.00     FCM - VFF     2 - 0     7.232   
为此,我使用fgets将字符串存储在临时字符串中,然后使用sscanf在逐行遍历文件时格式化字符串

while(fgets(temp, MAX_LINE_SIZE, input_file)!= NULL) {
  sscanf(temp, 
    " %*s %3s %d / %d / %d %s %3s - %3s %d - %d %6s",

    round[i].match[j].weekday, 
    &round[i].match[j].day, 
    ..... And so on ....
  j++;
}
电流输出为:

Weekday: Fre18.00FCNSDR3.211
Day: 17
Month: 7
Year: 2015
Start: 18.00FCNSDR3.211
Home team: FCNSDR3.211
Away team: SDR3.211
Score: 0 - 2
Viewers: 3.211
Weekday: Fre
Day: 17
Month: 7
Year: 2015
Start: 18.00
Home team: FCN
Away team: SDR
Score: 0 - 2
Viewers: 3.211
预期产出为:

Weekday: Fre18.00FCNSDR3.211
Day: 17
Month: 7
Year: 2015
Start: 18.00FCNSDR3.211
Home team: FCNSDR3.211
Away team: SDR3.211
Score: 0 - 2
Viewers: 3.211
Weekday: Fre
Day: 17
Month: 7
Year: 2015
Start: 18.00
Home team: FCN
Away team: SDR
Score: 0 - 2
Viewers: 3.211
由于某种原因,sscanf中带有%s占位符的字符串似乎在组合在一起


非常感谢所有帮助。

您确定要将
Fre
之类的字符串存储在4字节字符数组中吗


%3s
实际上读取4个字节<代码>F、
r
e
\0
。如果使用的数组太小,则会覆盖
\0
,导致字符串包含内存中接下来出现的内容(在本例中,是更多字符串)。

您完全正确。我忘记为每个字符串分配足够的内存。非常感谢。