C语言如何做到回车停止输入
呵呵,这个问题我也想过,想出了一个不怎么成熟的办法。
#includestdio.h
void
main()
{
int
a[100],num=0;
char
k;
do
{
scanf(“%d”,a[num]);
num++;
k=getchar();
}while(k!=’\n’num100);
}
这样以空格隔开各个数字,输入若干以后按回车即可。
但是容错性不好,如果结尾在按回车前多输入了一个空格,那么将继续循环。
如果提升了容错性,那么代码将变得比较复杂。
c语言怎样才能输入一行字符,以回车作为结束标志,分别统计出大写字母,小写字母,空格,数字和其他字符?
C代码和运行结果如下:
统计结果正确,望采纳~
附源码:
#include stdio.h
int main() {
char s[100];
fgets(s, 100, stdin); // 输入一行字符,包括行尾的’\n’
int i = 0, upper = 0, lower = 0, space = 0, digit = 0, other = 0;
while (s[i] != ‘\n’) {
if (s[i] = ‘A’ s[i] = ‘Z’)
upper++;
else if (s[i] = ‘a’ s[i] = ‘z’)
lower++;
else if (s[i] == ‘ ‘)
space++;
else if (s[i] = ‘0’ s[i] = ‘9’)
digit++;
else
other++;
i++;
}
printf(“大写字母:%d, 小写字母:%d, 空格:%d, 数字:%d, 其他:%d\n”,
upper, lower, space, digit, other);
return 0;
}
C语言,如何输入一个以回车结束的字符串??
库函数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’产生的。正好达到题面的要求——“输入一个以回车结束的字符串”!