库函数fgets把'\n'作为结束命令,同时也当作一个字符存储到目标空间里,并在其后加一个'\0'。所以用fgets接收键盘输入就能方便地达到题面的要求。可用下列代码测试:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char a[100];
fgets(a,100,stdin);//stdin表示从键盘输入而不是从文件
printf("%s",a);//这里%s后没有\n,但输出是有回车的
return 0;
}
这里使用了printf("%s",a);(输出字符串)而非printf("%s\n",a);(输出字符串加'\n'),却能达到后者的效果,是因为fgets函数把最后输入的'\n'作为一个字符存储在字串末尾了,在'\n'之后才加一个'\0',所以这里的回车是由字符串的最后一个字符'\n'产生的。正好达到题面的要求——“输入一个以回车结束的字符串”!
printf("Input a character: ");
scanf("%c",&c); //你输入的时候是回车结束,那么回车符要下面的getchar接受
printf("Input a string: ");
getchar(); //接受上面的回车符
第一题,没有scanf这句所以不用加getchar
while(c=scanf("%c",%str[i]!='\n')i++;