C中文件函数

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:48:17
文件a.dat里有内容123
我要用以下 函数来读取123为整数保存在m里,并输出
main()
{
FILE * fp;
char s[100];
int m;
fp=fopen("a.dat","r");
fread(&m,1,1,fp);
fscanf(fp,"%s",s);
printf("%d\n",m);
printf("%s\n",s);
fclose(fp);
}
为什么结果输出是随机值?

你用记事本打开你的a.dat文件是不是能看到123三个字符?
如果是的话那你输出的肯定不是123,但输出的跟编译器有关。在tc里
因为你用fread(); 来读数据是读int类型数据的,读两个字节,但你在a.dat文件里存放的是字符类型。实际上用十六进制表示是
0x31 0x32 0x33
你这样
fread(&m,1,1,fp); 就是自读出一个字节,读出0x31
所以m=0x3100

函数名: fread
功 能: 从一个流中读数据
用 法: int fread(void *ptr, int size, int nitems, FILE *stream);
参 数:用于接收数据的地址(字符型指针)(ptr)
单个元素的大小(size)
元素个数(nitems)
提供数据的文件指针(stream)
返回值:成功读取的元素个数