我使用visual c ++表单构建了一个图形程序。我正在尝试将文件读取为字符串。该文件的内容是简单的HTML代码。
现在,如果我创建一个空白项目并使用以下代码创建.c文件:
FILE *f;
int tamanho;
char *asd;
f=fopen("mail.txt","r");
if(f==NULL)
erro("Erro abrir file");
fseek(f,0,SEEK_END);
tamanho=ftell(f);
rewind(f);
asd=(char *)malloc(tamanho+1);
fread(asd,1,tamanho,f);
它将整个复制到字符串。
但是,如果我创建一个Windows窗体应用程序并编写相同的代码,它只会复制我文件的几行。
答案 0 :(得分:3)
fread()不保证阅读你要求的所有内容。
您需要检查返回值以查看实际读取的数量 您可能需要循环执行此操作,直到您已阅读所需内容。
size_t read = 0;
while(read != tamanho)
{
size_t amount = fread(asd + read,1,tamanho - read,f);
if (amount == 0)
{ // You may want to check for read errors here
}
read += amount;
}
答案 1 :(得分:1)
缺少一个循环?这样你就可以确保你正确地到达文件的末尾