c - C 的文件 I/O 函数

标签 c file-io

char *loadTextFile(const char *filename)
{
    FILE *fileh;
    char *text = 0;
    long filelength;
    if((fileh=fopen(filename,"rb"))== 0)
        printf("loadTextFile() - could not open file");
    else
    {
        fseek(fileh, 0, SEEK_END);
        filelength = ftell(fileh);
        rewind(fileh);
        text=(char *) smartmalloc((int)filelength + 1);
        fread(text,(int)filelength, 1, fileh);
        fclose(fileh);
        text[filelength]=0;
    }
    printf(text);
    return(text);
}

此函数仅返回 txt 文件的部分数据。这也是不一致的...soemtimes 有时会给我 100 个字符的文件 20。我看不出有什么问题。我想我可能会得到另一双眼睛。谢谢。

最佳答案

要检查的明显事项:

ftell(fileh) 给了你什么?

文件中可以嵌入NUL字符吗?这会导致 printf(text) 过早停止。

关于c - C 的文件 I/O 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329729/

相关文章:

c - 程序适用于 Mac OS,但不适用于 Windows

c - 为什么代码不适用于 malloc 但适用于非动态分配?

c++ - 只读取文本文件中整行的第一个整数

ruby - `File` 对象的访问模式之间的差异(即 w+、r+)

c - 字符数组在文件处理中不起作用

c - 如何在arduino中使用标准c头文件

c - 并行运行 while 循环

java - 如何从文件中读取字节,而结果 byte[] 正好一样长

c - Linux 上由两个命名管道 (FIFO) 循环链接的两个过滤器

bash 在文件的每一行中搜索字符串