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