fprint函数输入多了些数据

img

img


为啥会出现这个37 和1呀,按照代码走的话就只有那个a 和 b呀 这里错误在哪里呀

%c读入数据会接收任何输入字符,包括空格和回车符等
所以,你每输入一行的时候,回车换行符会残留在输入缓存里,所以下一次用%c循环读入的时候就不能保证数据正确读入(有可能会读到多余的空格符和回车符)
循环里改成以下

scanf("%c%d", &ch, &j);//%d读入会自动跳过空格符,所以%c和%d之间没必要用多余的空格
fprintf(out2, "%3c    %4d", ch, j);//其实用\t制表符来控制更好
getchar();//去掉多余的回车符

37是j的值,因为j没有初始化,所以是个随机数
后面1也是j的值
因为你没有读入多余的换行,所以换行驻留在缓冲区里,被读走了