C fread函数多读入的问题

#include<cstring>#include<cstdio>usingnamespacestd;chars[20000000];intmain(){freopen(... #include<cstring>
#include<cstdio>
using namespace std;
char s[20000000];
int main(){
freopen("data.in","r",stdin); freopen("data.out","w",stdout);
fread(s,1,20000000,stdin);
fwrite(s,1,strlen(s),stdout);
fclose(stdin); fclose(stdout);
return 0;
}
为什么我data.in里面是
1 2
2 3
3 4
data.out输出
1 2
2 3
3 4
4

多输出了一个,求解是什么情况??
展开
 我来答
cooke1234
2013-07-31 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3613万
展开全部
我感觉你的代码没有问题,不过我建议你这样写:
int main(){
    int len;
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    len = fread(s,1,20000000,stdin);  //获取读入数据的长度
    fwrite(s,1,len,stdout);  //按照读入的长度进行输出
    fclose(stdin); fclose(stdout);
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chr1999
2013-07-31 · TA获得超过1056个赞
知道小有建树答主
回答量:2462
采纳率:0%
帮助的人:1245万
展开全部
int len;
freopen("data.in","r",stdin); freopen("data.out","w",stdout);
len=fread(s,1,20000000,stdin);
fwrite(s,1,len,stdout);
读出来的数据不一定是\0结束
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式