我想在linux系统中通过套接字传输文件。我知道如何使用fgetc()和EOF来执行此操作,或者首先获取文件的长度。还有没有别的选择?
发布于 2015-10-25 16:43:24
检查fread()的返回值。如果返回值不等于传递给fread()的第三个参数,要么发生错误,要么到达EOF。
发布于 2017-11-08 00:29:08
函数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;https://stackoverflow.com/questions/33327720
复制相似问题