c - 从文件中获取字符串

标签 c string file get

为什么这段代码的输出是内存中的一些随机单词?

void conc()
{
    FILE *source = fopen("c.txt", "r+");
    if(!source)
    {
        printf("Ficheiro não encontrado");
        return;
    }

    short i = 0;
    while(fgetc(source) != EOF)
        i++;

    char tmp_str[i];
    fgets(tmp_str, i, source);
    fclose(source);
    printf("%s", tmp_str);
}

我想这应该会给我文件的内容。

最佳答案

因为在您使用 fgetc() 遍历文件后,位置指示器位于文件末尾。 fgets() 没有什么可读的。您需要使用 rewind(source); 重置它,使其指向开头。

顺便说一句,不要使用fgetc() 遍历文件,这是一个非常丑陋的解决方案。使用 fseek()ftell()lseek()而不是获取文件的大小:

fseek(source, SEEK_END, 0);
long size = ftell(source);
fseek(source, SEEK_SET, 0); // or rewind(source);

备选方案:

off_t size = lseek(source, SEEK_END, 0);
rewind(source);

关于c - 从文件中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343308/

相关文章:

c - 从字符串中就地删除字符

javascript - 如何检查一个字符串的所有字符是否都存在于另一个字符串中?

qt - 如何使用Qt读取文件并快速显示?

c - 在 Lua 中包含 C 库

c - 如何将文件添加到 mpd(音乐播放器守护进程)的播放列表中?

python - python : input and output arrays 的 swig 类型映射

复杂的C程序

java - trim.() 方法不起作用(java)

php - 通过 PHP 从站点重复检索数据

java - OutOfMemoryError 读取具有大行的 174 Mb 文本文件