fread为何输出内容不同?

[复制链接]
查看11 | 回复2 | 2010-9-3 17:14:27 | 显示全部楼层 |阅读模式
代码如下:
#include "stdafx.h"
#include
#include
#include
int main()
{
FILE *fp1,*fp2;
char tmp[6] = {'0'};
char tmpr[6] = {'0'};

printf("input a string\n");
scanf("%s",tmp);
fp1=fopen("C:\\0903.txt","wt");
fwrite(tmp,sizeof(tmp),1,fp1);
fclose(fp1);
memset(tmp,0,sizeof(tmp));
printf("%s\n",tmp);
fp1=fopen("C:\\0903.txt","rt");
fseek(fp1,0,SEEK_SET);
fread(tmp,sizeof(tmp),1,fp1);
printf("%s\n",tmp);
fflush(fp1);
fclose(fp1);
memset(tmpr,0,sizeof(tmpr));
fp2=fopen("C:\\0903.txt","rt");
fseek(fp2,0,SEEK_SET);
fread(tmpr,sizeof(tmpr),1,fp2);
printf("%s\n",tmpr);
fflush(fp2);
fclose(fp2);
}
windows下编译通过,运行输入 abcdef ,调试一看tmp和tmpr六个字符都一样,但是整体字符串却不一样,输出也不一样,这是为什么呀?

回复

使用道具 举报

千问 | 2010-9-3 17:14:27 | 显示全部楼层
你的字符数组只有6位,只能存6个以下字符(不含6个)。记住,字符数组,最后一个位置用来存结束符\0的!所以,你不能输入6个字符,否则该字符串就没有结束符了,将会产生一些莫名其妙的结果。
回复

使用道具 举报

千问 | 2010-9-3 17:14:27 | 显示全部楼层
输出不一样的,因为数组满了,结尾没有结束符'\0'.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行