#include<stdio.h>
int main(void) {
char line[81],character;
int c;
c=0;
printf("Enter Text.Press <Return> at end \n");
do{
character=getchar();
line[c]=character;
c++;
}while(character !='\n');
c=c-1;
line[c]='\0';
printf("\n%s\n",line);
}
'\n'
是换行字符,我相信您已经知道。新行是与其他字符一样的字符,例如'a'
,'b'
,'c'
,'\t'
(制表符),空格' '
等。
所以while(character !='\n')
表示字符是不是换行符。
\n
是换行符,通过按Enter / Return键来完成。
使用
do{
...
}while(character !='\n');
您有一个do-while
循环,其条件为证明character
中的字符是否为换行符,并在适当的输入之后附加。如果\n
在character
内部,则循环中断,并且不进行进一步的迭代。
请注意,因为它是一个do-while
循环,所以循环的主体至少要经过一个遍历。
[概念
do{
character=getchar();
line[c]=character;
c++;
}while(character !='\n');
是在每次演练时读取一个字符,并将其后的字符写入数组line
的元素中,包括换行符。
请注意,在循环后附加\0
c=c-1;
line[c]='\0';
非常重要,因为此字符会终止正确的字符串!
还请注意,getchar()
的返回值是int
类型,以保存错误的EOF
。您应该将character
的类型更改为int
,以后再验证该值以确保没有错误发生,这一点很重要。对于类型为int
的对象,分配给数组没有问题,因为char
相对于int
。
'\ n'是换行符,它还指示字符串的结尾。在这种情况下,它正在检查是否到达字符串的末尾,在while(character!='\ n')条件下,它将执行循环直到到达字符串的末尾,并且这是一个do-while循环,do –部分将再次执行。