C语言输出文件末尾出现多余的乱码

#include<stdio.h>intmain(){FILE*fin=fopen("isbn.in","r");FILE*fout=fopen("isbn.out","... #include <stdio.h>

int main()
{
FILE *fin=fopen("isbn.in","r");
FILE *fout=fopen("isbn.out","w");
int i,t,k;
char a[14];
for(i=0;i<14;i++){
fscanf(fin,"%c",&a[i]);
}
t=(a[0]-48)*1+(a[2]-48)*2+(a[3]-48)*3+(a[4]-48)*4+(a[6]-48)*5+(a[7]-48)*6+(a[8]-48)*7+(a[9]-48)*8+(a[10]-48)*9;
t=t%11;
if(t==10){
k='X';
}else{
k=t+'0';
}
if(k==a[12]){
fprintf(fout,"Right");
}else{
a[12]=k;
fprintf(fout,"%s\0",a);
}
fclose(fin);
fclose(fout);
return 0;
}

求解为什么输出的字符后面会有乱码,\0为什么没起到作用
展开
 我来答
匿名用户
推荐于2018-04-16
展开全部
既然你要以字符串的形式输出 char 数组,那么在定义 a 的时候就应该给\0多留一个空。如果你不想留,那么在输出的时候,应该以字符的形式 %c 一个一个地输出。

给字符串加\0不是在 fprintf(fout,"%s\0",a); 这个地方加的。要在字符串本身,也就是 char a[] 的最后一个元素里赋值为 \0 。
qmg1023
2013-11-07 · TA获得超过888个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:906万
展开全部
输出字符串自动会有\0结束,不需要显示输出\0的吧。

另外a总共12个字符,都填值了,没有地方放\0了,声明为 char a[15]={‘\0’} 吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友af84c79
2013-11-07 · TA获得超过209个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:200万
展开全部
百分s是全部数据 用for语句遍历打印吧 或者试试puts函数 或者用fomat函数规定输出距离
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式