내가 구조체 이런 종류의 게임의 일부 최고 기록을로드하기 위해 노력하고있어에 문제가 갖는C - strtok를
typedef struct{
char date_time[20];
int record_minutes;
int record_seconds;
int plays;
} Highscore;
최고 기록은 그래서 같은 txt 파일에 저장됩니다 : "nrplays 분 초 DATE_AND_TIME"
예 : 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
전체 12분의 31/2017-23해야한다 : 00 : 20 문자열입니다.
strtok의 프로토 타입이'char * strtok (char * str, const char * delim); '이라고하면 함수를 제대로 사용하지 않고 있습니다. 두 번째 매개 변수는 구분 기호 여야합니다. – fvu
'token = strtok (NULL, linha);에서'linha' 이외의 것을 사용하고있을 것입니다 - 아마도 다른 사건이 있다면 "\ n"'아마. 'strtok()'을 사용하는 것은 어렵습니다; 가능한 한 피하십시오. –
'FILE * f; 줄에 불쾌한 상호 연결이 있습니다. if (check_ifEmptyFile() == - 3) return; fshen ("highscores.txt", "r");'- 어떤 의미를 만들기 위해서'check_ifEmptyFile()'은 파일 이름''highscores.txt ''도 알고 사용해야한다. 커플 링 감소. 파일 이름을 함수에 전달하여 함수가 작동하도록합니다. 그것은'loadHighScores()'함수에 적용된다; 작업 할 파일 이름을 제공해야합니다. –