char * file = malloc(buffer);
assert(file != 0);
char str[20];
snprintf(file, buffer, "%s/%s", newestDirName, fileInDir->d_name);
FILE * input = fopen(file, "r"); // read
fseek(input, 0, SEEK_END);
fgets(str, 20, input);
printf("str = %s \n", str);
我正在读取的文件有最后一行:
ROOM TYPE: END_ROOM
为什么 str 不存储“ROOM TYPE: END_ROOM
”
我认为 fseek(input, 0, SEEK_END)
获取最后一行,光标从最后一行的最左边位置开始。这是错误的吗?
我认为fgets(str, 20, input)
从输入中获取20个字符并将其放入str
中,这是一个char *
变量.
但是当我打印 str
时,我得到了 str 值的乱码:
str = ▒▒As=
最佳答案
如果你需要使用fgets,你可以尝试这个。但是,没有什么可以保证一行中的字符数不超过20个字符,特别是如果每行的字符数是可变的。
char str[20]={0};
FILE * input = fopen("file.txt", "r"); // read
if(input)
{
char *ptr;/*Warns you if you have reached the end of the file or some error*/
do
{
ptr=fgets(str, 20, input);
} while(ptr);
if(str)
printf("str = %s \n", str);
fclose(input);
}
关于c - C 编程中的 fseek 和 fgets 在这里没有正确使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970011/