У меня есть текстовый файл, похожий на следующее:C strtok и зЬгсру
Name1: ID1
Name2: ID2
Name3: ID3
Я пытаюсь разобрать его, чтобы получить
Name1
Name2
Name3
хранится в переменной.
я написал следующую функцию:
/*
* filename Name of file to read
* result The result will be stored here
*/
void readlist(char* filename, char* result) {
FILE *fp;
char buffer[2048];
memset((void *)result, '\0', BUFFER_SIZE);
fp = fopen(filename, "r");
while (fgets(buffer, sizeof(buffer), fp)) {
char *token = NULL;
token = strtok(buffer, ":");
strcat(result, token);
}
fclose(fp);
}
Однако, когда я называю его:
char result[2048];
readlist("test.txt", result);
printf("%s", result);
Я получаю пустой вывод. Кажется, что strtok() испортил данные, но я могу ошибаться.
Что я здесь делаю неправильно?
Спасибо заранее!
Спасибо, что проверили это для меня. Я потратил много часов, пытаясь понять из-за проблемы. Похоже, что что-то не так с моим компилятором ... –
Спасибо за согласие, но я думаю, что вы переходите к выводам о том, что ваш компилятор «ошибается». Я думаю, что поведение «не определено» для таких вещей Следуйте одному из предложений, которые я сделал для обеспечения того, чтобы 'result' был инициализирован чем-то разумным (как также указывалось другими ответами) - не просто вините ваш компилятор! – Floris
Да, я пробовал это, однако это не было (1) {} цикл позже в функции main(), и по какой-то причине он заставлял выход зацикливаться, даже если выходной код до и снаружи цикла. Большое спасибо! –