[英]C - Print one word per line
我正在尝试制作我的以下 C 程序的版本,该程序包含在 C 编程语言的着名书中:
编写一个程序,每行打印一个单词。 这是我的代码:
#include <stdio.h>
#define OUT 1
#define IN 0
int main(void){
char c;
int state = OUT; /*Indicates if we are IN a white space, tab, nl or if we are OUT (a simple letter)*/
while ((c = getchar()) != EOF)
{
if (c == ' ' || c == '\n' || c == '\t')
{
state = IN;
putchar('\n');
} else
if(state == IN){
state = OUT;
putchar(c);
}
}
return 0;
}
为了测试它,我尝试作为输入:
正确地说,“abc”是因为 getchar() function 而被中继的,它只记住了“c”变量中的一个字符? 而且这也是正确的,说 getchar() function 将“abc”作为单个字符处理了 3 次(迭代时 3 次),因为每个字母之间有空格?
正确地说,“abc”是因为 getchar() function 而被中继的,它只记住了“c”变量中的一个字符?
这是不正确的, getchar
按char
解析char
,它不会truncate ,发生的事情是state
仅在输入空格、换行符或制表符时才被分配IN
。
由于putchar(c)
的执行取决于state
是否等于IN
它永远不会打印任何内容,除非在某些时候输入这三个空白字符之一,在这种情况下,它将打印下一个字符或\n
用于这三个字符之一空白字符。
而且这也是正确的,说 getchar() function 将“abc”作为单个字符处理了 3 次(迭代时 3 次),因为每个字母之间有空格?
所有 5 个字符都由getchar()
读取,output 将是:
b
c
由于上一个问题中解释的原因。
getchar()
应该分配给它的返回类型int
,将它分配给char
是有问题的,因为char
可能是无符号的并且 EOF 通常是-1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.