用visualc++形式读取文件的行为不同于在c程序中读取

Reading file with visual c++ form behaves differently than reading in C program

本文关键字:读取 不同于 程序 visualc++ 文件      更新时间:2023-10-16

我正在用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窗体应用程序并编写相同的代码,它只复制我的文件的几行

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;
}

缺少while循环?这样你就可以确保你正确地到达文件的末尾