如何从函数返回文件内容?

时间:2011-11-25 17:16:16

标签: c

我正在写一个C库。我想将此函数的文件内容返回给调用者。

如何将文件内容转换为char []?

由于我在我的C代码中使用perl.h,因此fopen崩溃了。 有什么其他方法可以将文件转换为char数组,除了打开&读文件?

这是我的代码:

FILE* fp = fopen("console.txt", "r");
char message[1024];
strcpy(message,"\n");

char buf[80];
while(!feof(fp))
{
    fgets(buf, sizeof(buf)-1, fp);
    strcat(message, buf);
}

4 个答案:

答案 0 :(得分:2)

  1. 获取文件大小(请参阅How can I get a file's size in C?
  2. 分配内存以存储文件内容(请参阅malloc)。
  3. 将文件内容读入已分配的内存(请参阅read)。
  4. 以字节为单位向用户返回一个指针和一段数据。
  5. 不要忘记检查这些步骤之间的错误。

答案 1 :(得分:1)

你需要做一些事情

  • 确定文件大小(checkout fstat / stat)
  • 你需要malloc足够的内存来保存文件
  • 然后你可以使用fread将文件的内容读入你的数组(不要忘记以二进制模式打开文件)
  • 返回指针(并且不要忘记它必须由函数调用者释放)

答案 2 :(得分:1)

试试这段代码。该函数返回带有文件内容的字符串,只需打印它即可。

    #include <stdio.h>
    #include <stdlib.h>

    char *readFile(char *filename)
    {
        char * buffer = 0;
        long length;
        FILE * f = fopen (filename, "r");
        if (f)
        {
            fseek (f, 0, SEEK_END);
            length = ftell (f);
            fseek (f, 0, SEEK_SET);
            buffer = malloc (length);
            if (buffer)
            {
                fread (buffer, 1, length, f);
            }
            fclose (f);
        }
        return buffer;
    }

    int main()
    {
       char *content=readFile("D://test1.xml");
       printf("%s",content);
       return 0;
    }

答案 3 :(得分:0)

需要更多信息才能给出一个好的答案,因为需要文件的内容和性质。

但一般来说,

如果是文本文件,请参阅stdio库 - 您可以获取长度,创建数组并填充它。否则(二进制文件)解析它将是一个好主意并返回一个数据结构 - 更有用