我试图将游戏的某些高分加载到这种结构中:
typedef struct{
char date_time[20];
int record_minutes;
int record_seconds;
int plays;
} Highscore;
高分存储在txt文件中,如下所示:" nrplays minutes seconds date_and_time"
e.g。 15 2 10 31/12/2017-23:00:20
我用来读取文件的代码的第一位(只有3行,这就是为什么我没有创建循环)是以下
void loadHighscores(){
FILE *f;
if (check_ifEmptyFile()==-3)
return;
f=fopen("highscores.txt", "r");
char linha[30];
char *token;
High1 = (Highscore *)malloc(sizeof(Highscore));
fgets(linha, 30, f);
printf("linha: %s", linha);
token = strtok(linha, " \n");
High1->plays=atoi(token);
printf("%d\n", High1->plays);
token = strtok(NULL, linha);
High1->record_minutes=atoi(token);
printf("%d\n", High1->record_minutes);
token = strtok(NULL, linha);
High1->record_seconds=atoi(token);
printf("%d\n", High1->record_seconds);
token = strtok(NULL, linha);
snprintf(High1->date_time, 20*sizeof(char), "%s",token);
printf("%s",High1->date_time);
}
输出是这个
linha: 15 2 10 31/12/2017-23:00:20
15
2
0
/
这意味着strtok并没有按照我的意图去做。有什么提示吗?
请注意,High1
之前已定义,malloc
并非错误,High1->date_time
应该是整个31/12 / 2017-23:00:20字符串
答案 0 :(得分:2)
在strtok()
中,第二个参数应该是分隔符。
所以,在你的情况下,应该是字符空间:''。
token = strtok(linha, " ");
和连续的电话:
token = strtok(NULL, " ");
解析linha
中的每一行。