我正在将原始文本文件读入字符数组,然后我想基于“\ n”逐行拆分数据。我的代码是附加的,但我的输出非常奇怪。
INPUT FILE是在Windows上使用VIM创建的.txt文件,它看起来像:
london
manchester
britain
...
CODE(忽略一些var声明):
....
char * buffer = 0;
long length;
fl = fopen ("file.txt", "r");
if (fl){
fseek (fl, 0, SEEK_END);
length = ftell (fl);
fseek (fl, 0, SEEK_SET);
buffer = malloc (length);
if (buffer){
fread (buffer, 1, length, fl);
}
fclose (fl);
printf(buffer)
}else{
printf("data file not found");
return -1;
}
char str[80] = "london\nmanchester\nbritain";
char* entity = strtok(buffer, "\n"); //LINE-A, replacing 'buffer' with 'str' the output is correct.
while (entity != NULL) {
printf("%s\n", entity); //this prints strange output as shown below
entity = strtok(NULL, "\n");
}
...
输出:
ondon
anchester
ritain
第一个角色总是丢失。
但是,如果我将“buffer”替换为“str”,则声明的字符数组与文件的内容相同,一切都按预期工作。
我不明白为什么我会收到此错误。请任何建议。
恩谢谢!