The C Programming Language练习1-10中碰到的一个关于for循环的有关问题
The C Programming Language练习1-10中碰到的一个关于for循环的问题。
题目要求如下:
/* 练习 1-10. 写一个程序,将输入拷贝到输出,将每个制表符替换为\t,将每个空格替换为\b,
将每个反斜杠替换为\\。这使得制表符和空格能够被明确地分辨出来。*/
我的程序如下:
上面的程序可以正常运行,也能够得到题目要求的结果。但是是一旦换成了如下程序就会出现问题。比如我测试输入1234,就会间隔的返回12或者34。还有就是CTRL+Z也无法结束程序了。希望各位帮助,谢谢了先~
------解决思路----------------------
for(表达式1;表达式2;表达式3)
{
语句1;
}
//表达式2,表达式3每次都会执行,所以每次循环执行了两遍c = getchar()
题目要求如下:
/* 练习 1-10. 写一个程序,将输入拷贝到输出,将每个制表符替换为\t,将每个空格替换为\b,
将每个反斜杠替换为\\。这使得制表符和空格能够被明确地分辨出来。*/
我的程序如下:
#include <stdio.h>
int main()
{
int c;
//for ( ;(c = getchar()) != EOF; c = getchar()){
for (c = getchar(); c != EOF; c = getchar()){
if (c == '\t')
printf("\\t");
else if (c == ' ')
printf("\\b");
else if ( c == '\\')
printf("\\\\");
else
putchar(c);
}
return 0;
}
上面的程序可以正常运行,也能够得到题目要求的结果。但是是一旦换成了如下程序就会出现问题。比如我测试输入1234,就会间隔的返回12或者34。还有就是CTRL+Z也无法结束程序了。希望各位帮助,谢谢了先~
#include <stdio.h>
int main()
{
int c;
for ( ;(c = getchar()) != EOF; c = getchar()){
//for (c = getchar(); c != EOF; c = getchar()){
if (c == '\t')
printf("\\t");
else if (c == ' ')
printf("\\b");
else if ( c == '\\')
printf("\\\\");
else
putchar(c);
}
return 0;
}
------解决思路----------------------
for(表达式1;表达式2;表达式3)
{
语句1;
}
//表达式2,表达式3每次都会执行,所以每次循环执行了两遍c = getchar()