如何使用fread()在循环中读取整个文件?

时间:2015-10-25 08:38:56

标签: c fread

我想通过linux系统中的套接字传输文件。我知道如何使用fgetc()和EOF这样做,或者首先得到文件的长度。还有其他选择吗?

2 个答案:

答案 0 :(得分:3)

检查fread()的返回值。如果返回值不等于传递给fread()的第3个参数,则会发生错误或达到EOF。

答案 1 :(得分:0)

函数fread()将给定数据流(第4个参数)中的数据读取到指针所指向的数组(第1个参数)

fread (pointer to the block of memory, size of an element, number of elements, pointer to the input file)

fread()从上次停止的位置读取并返回成功读取的元素数。所以,如果你这样做,fread()将不会超越。

*您必须根据输入文件编辑元素数量。

// Open input file
FILE *inptr = fopen (infile, "r");
//Check for a valid file
if (inptr == NULL)
{
    fprintf (stderr, "Could notopen %s", infile);
    return 1;
}

// Memory allocation for buffer
int *buffer = malloc(512);

// Read input file
while (fread (&buffer, 1, 512, inptr) == 512)
{
      // DO WHAT YOU NEED HERE
}

// Free memory from buffer
free(buffer);

// close infile
fclose(inptr);

return 0;