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为什么没起到作用 展开
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为什么没起到作用 展开
3个回答
推荐于2018-04-16
展开全部
既然你要以字符串的形式输出 char 数组,那么在定义 a 的时候就应该给\0多留一个空。如果你不想留,那么在输出的时候,应该以字符的形式 %c 一个一个地输出。
给字符串加\0不是在 fprintf(fout,"%s\0",a); 这个地方加的。要在字符串本身,也就是 char a[] 的最后一个元素里赋值为 \0 。
给字符串加\0不是在 fprintf(fout,"%s\0",a); 这个地方加的。要在字符串本身,也就是 char a[] 的最后一个元素里赋值为 \0 。
展开全部
输出字符串自动会有\0结束,不需要显示输出\0的吧。
另外a总共12个字符,都填值了,没有地方放\0了,声明为 char a[15]={‘\0’} 吧
另外a总共12个字符,都填值了,没有地方放\0了,声明为 char a[15]={‘\0’} 吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百分s是全部数据 用for语句遍历打印吧 或者试试puts函数 或者用fomat函数规定输出距离
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询