【发布时间】:2010-12-09 19:47:46
【问题描述】:
我在这样的文件中有一行:“33 sun 15:00 FCM - SIF 3 - 0”。 我需要提取所有数据。到目前为止,我有这段代码,在提取字符串“sun”、“FCM”和“SIF”时会出错。它将“sun”变成“sunFCMSIM”,将“FCM”变成“FCMSIF”,而“SIF”是正确的。
您可以像上面那样从多行创建输入文件。 那么如何确保提取的这些信息是正确的呢?
#include <stdio.h>
#include <stdlib.h>
#define LINEBUFFERSIZE 50
#define TEAMNAMELENGTH 3
#define WEEKDAYLENGTH 3
void __construct(char fileName[FILENAME_MAX]) {
FILE *inputFile;
char buffer[LINEBUFFERSIZE];
// Open input file
inputFile = fopen(fileName, "r");
// Read all matches and create
while(fgets(buffer, LINEBUFFERSIZE, inputFile) != NULL){
int round, hour, minute, homeGoals, outGoals;
char outTeam[TEAMNAMELENGTH], homeTeam[TEAMNAMELENGTH], weekday[WEEKDAYLENGTH];
fscanf(inputFile, "%d %3s %2d:%2d %3s - %3s", &round, weekday, &hour, &minute, homeTeam, outTeam);
printf("Round: %d\n", round);
printf("%s %02d:%02d\n", weekday, hour, minute);
//printf("%s - %s\n", homeTeam, outTeam);
}
fclose(inputFile);
}
int main() {
/*char inputFile[FILENAME_MAX];
printf("Enter input file> "); scanf("%s", &inputFile);*/
__construct("superliga-2009-2010");
return 0;
}
【问题讨论】: