文件函数fread()获取文件的内容的问题,在线等,急啊!

2025-03-04 15:07:14
推荐回答(3个)
回答1:

函数原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); 
  参 数:
  1.用于接收数据的地址(指针)(buffer)
  2.单个元素的大小(size) :单位是字节而不是位,例如读取一个整型数就是2个字节
  3.元素个数(count)
  4.提供数据的文件指针(stream)
  返回值:成功读取的元素个数

给你一个例子 你看一下
  #include
  void main( void )
  {
  FILE *stream;
  char list[30];
  int i, numread, numwritten;
  /* Open file in text mode: */
  if( (stream = fopen( "fread.out", "w+t" )) != NULL )
  {
  for ( i = 0; i < 25; i++ )
  list[i] = (char)('z' - i);
  /* Write 25 characters to stream */
  numwritten = fwrite( list, sizeof( char ), 25, stream );
  printf( "Wrote %d items\n", numwritten );
  fclose( stream );
  }
  else
  printf( "Problem opening the file\n" );
  if( (stream = fopen( "fread.out", "r+t" )) != NULL )
  {
  /* Attempt to read in 25 characters */
  numread = fread( list, sizeof( char ), 25, stream );
  printf( "Number of items read = %d\n", numread );
  printf( "Contents of buffer = %.25s\n", list );
  fclose( stream );
  }
  else
  printf( "File could not be opened\n" );
  }

回答2:

fread的原型见353951452的回答。
我建议可以这样写:
//声明用到的变量
unsigned char fa[3];
unsigned short ret;
unsigned short idx;
//从文件中读取最多两个字节的数据
ret=fread(fa, 1, 2, fp);
//根据返回的读取到的数据数量,按十六进制的方式和相应的ASCII方式打印出来。
for (idx=0;idx printf("0x%02x(%c) ", fa[idx], fa[idx]);
}
printf("\n");

回答3:

假如你当前目录有个二进制文件abc, 你可一参考下面程序来读它
#include
#include

int main(void)
{
size_t len;
char buf[128];
FILE *fp = fopen("abc", "rb");
fseek(fp, 0, SEEK_END);
len = ftell(fp);
fread(buf, 1, len, fp);
printf("%s", buf);
fclose(fp);
return 0;
}