使用fread将所有文件内容复制到char数组中

时间:2017-05-11 14:54:42

标签: c fopen

我试图将文件的内容,特别是PDF文件复制到字符数组中,以便我可以通过网络发送。

我正在使用fopen和fread。

//Get the file path
getFilePath();
//Open the file
fopen_s(&fp, filePath, "r");
fseek(fp, 0, SEEK_END);
size = ftell(fp);
rewind(fp);
//allocate memory
buffer = (char*)malloc(sizeof(char)*size);

int charsTransferred = fread(buffer, 1, size, fp);

fclose(fp);
free(buffer);

我有charsTransferred查看fread传输了多少个字符。使用大小我可以告诉我应该移动多少个字符,但显然我没有得到那么多。有谁知道这里的问题是什么?

1 个答案:

答案 0 :(得分:0)

首先,如果是PDF,我需要以二进制模式打开,我认为这是一种二进制格式。然后,对于非常大的文件以及文本文件(在磁盘上物理上抑制了字符),seek end / ftell方法往往会失败。没有纯ANSI C方式来定义文件,但是函数stat()是可以广泛使用的,并且为您提供文件大小。