我有一个文本文件,其输出类似于以下样式:
一些文本有10个试验,这里有12个试验,还有txt 20个试验
此处有7项试验文本,有16项试验文本,还有txt 20项试验文本
等
我想做的是在 trials 之前获取值。我有一个理论上可以正常工作的代码,但是由于文本被操纵而与您运行{{1}时的代码不同,因此无法运行}
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()
答案 0 :(得分:3)
请关注
char trial[6] = "trials";
这里trial[6]
应该是trial[7]
,以便不仅存储字母,还存储'\0'
(行尾)