C语言,如何输入一个以回车结束的字符串??

这两道不同的题都需要“输入一个以回车结束的字符串”,但是写的不一样,运行都是对的。但我把两道题这个部分对调一下就都不对了,到底应该怎么写“输入一个以回车结束的字符串”这段... 这两道不同的题都需要“输入一个以回车结束的字符串”,但是写的不一样,运行都是对的。但我把两道题这个部分对调一下就都不对了,到底应该怎么写“输入一个以回车结束的字符串”这段程序啊?好困惑……
那个第一题在while前为什么不能写getchar,第二题又为什么要在while前写getchar……求解T T
1.
#include<stdio.h>
int main(void)
{
int i=0,count=0;
char s[80],c;
printf("Input a string: ");

while((c=getchar())!='\n') 从这里开始
{
s[i++]=c;
}
s[i]='\0'; 到这里结束
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
if(s[i]!='A'&&s[i]!='E'&&s[i]!='I'&&s[i]!='O'&&s[i]!='U')
count++;
}
}
printf("count=%d",count);
return 0;
}

2.
#include<stdio.h>
int main()
{

char ch[80],c,i=0,flag=0;
int index;

printf("Input a character: ");
scanf("%c",&c);
printf("Input a string: ");

getchar(); 从这里开始,
while((ch[i]=getchar())!='\n')
i++;
ch[i]='\0'; 到这里结束。
for(i=0;ch[i]!='\0';i++)
if(c==ch[i]){
index=i;
flag=1;}
if(flag==1)
printf("index=%d",index);
else if(flag==0)
printf("Not Found\n");
return 0;
}
展开
 我来答
White_MouseYBZ
2015-09-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6637万
展开全部

库函数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'产生的。正好达到题面的要求——“输入一个以回车结束的字符串”!

IT孤鹜
2014-05-08 · TA获得超过4198个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3579万
展开全部
printf("Input a character: ");
scanf("%c",&c); //你输入的时候是回车结束,那么回车符要下面的getchar接受
printf("Input a string: ");
getchar(); //接受上面的回车符

第一题,没有scanf这句所以不用加getchar
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无名人氏一个
2015-09-13 · TA获得超过126个赞
知道答主
回答量:78
采纳率:100%
帮助的人:53.1万
展开全部
while(c=scanf("%c",%str[i]!='\n')i++;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式