我编写了以下程序来回答 Kernighan 和 Ritchies ch1 问题 12。
问题是我从来没有真正理解如何正确使用函数,想知道为什么我写进这个程序的getcharc()不起作用?
什么是解释正确功能使用的好资源。在哪里?如何?
我从 Richard Heathfield 的网站(它使用 or,而不是我使用的嵌套 while 语句)知道这个问题的最佳解决方案||
,但是我想知道如何使我的程序正常工作:
#include <stdio.h>
int getcharc ();
// Exercise 1-12
// Copy input to output, one word per line
// words deleniated by tab, backspace, \ and space
int main()
{
int c;
while ((c = getchar()) != EOF) {
while ( c == '\t') {
getcharc(c);
}
while ( c == '\b') {
getcharc(c);
}
while ( c == '\\') {
getcharc(c);
}
while ( c == ' ') {
getcharc(c);
}
putchar(c);
}
}
int getcharc ()
{
int c;
c = getchar();
printf("\n");
return 0;
}
没有该功能的原始程序(我知道它有错误)是:
#include <stdio.h>
// Exercise 1-12
// Copy input to output, one word per line
// words deleniated by tab, backspace, \ and space
int main()
{
int c;
while ((c = getchar()) != EOF) {
while ( c == '\t') {
c = getchar();
printf("\n");
}
while ( c == '\b') {
c = getchar();
printf("\n");
}
while ( c == '\\') {
c = getchar();
printf("\n");
}
while ( c == ' ') {
c = getchar();
printf("\n");
}
putchar(c);
}
}
所以我试图用这个功能做的就是停止
c = getchar();
printf("\n");
每次都被重复。