У меня есть текстовый файл с выводом, похожим на этот стиль:
некоторый текст 10 испытаний другой текст здесь 12 испытаний и немного больше txt 20 испытаний
некоторый текст здесь7 испытаний текст 16 испытаний и более txt 20 испытаний
и т. Д.
Я пытаюсь получить значения до испытаний У меня есть код, которыйработать теоретически, но ломается, потому что текст манипулируется не так, как при запуске strcmp()
char *fileToString(char *fileName){
FILE *file = fopen(fileName, "rb");
long lSize;
fseek(file, 0, SEEK_END);
lSize = ftell(file);
fseek(file, 0, SEEK_SET);
char *buffer = malloc(lSize);
fread(buffer, 1, lSize, file);
fclose(file);
return buffer;
}
Основное выглядит примерно так:
path[20] = "path/to/file.txt";
char *a = fileToString(path);
char trial[6] = "trials";
char *token, *tmp;
token = strtok(a, " \n");
tmp = token;
while(token != NULL){
if(strcmp(token, trial)==0){
printf("%s trials\n", tmp);
}
printf("tmp: %s | token %s | strcmp %d\n", tmp, token, strcmp(token,trial));
tmp = token;
token = strtok(NULL, " \n");
}
Результат должен быть
10 trials
12 trials
20 trials
7 trials
16 trials
20 trials
и т. Д., Но strcmp(token, trial)
иногда дает мне ненулевое значение, даже если token
и trial
должны совпадать.Когда я напечатал strcmp()
значения, это то, что я получил в результате
tmp: 12 | token trials | strcmp -81
...