使用visual c ++表单读取文件的行为与在C程序中读取的行为不同

时间:2011-12-10 17:12:17

标签: c++ c visual-studio

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

2 个答案:

答案 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)

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