
main()
{
int c;
i=0;j=0;
while((c=getchar())!=EOF)
{
if(c=='\t')
{
c='\\t';/*就是这里不知道应该怎么写,如果是\\输出是一个\ 但如果是\\t就只有字母t没有\ 求解*/
putchar(c);
}else{
putchar(c);
}
}
}
想输出\t需要两个char来存储,也就是'\\'谈燃含, 't'
而你用int变量来保存两个char的内容,你说会是什么样呢
c之所以定义成int型,是因为为了获取EOF,EOF长度会超过char所能含笑表示的范围。
你应该写成
if(c=='\t')
{
c='\\';
putchar(c);
c = '段卜t';
putchar(c);
}
给楼上做个补充:
第一个问题
为什么不输入#就运行,因为getchar()是当用户键含拆入回车之后,getchar()才开始从stdin流中每次读入一个字符,建议楼主试试可蔽宽回显的getche()和不回显的getch()
第二个问题
就是puts()的原因,它会默认谈并枣换行