注册 登录
编程论坛 C语言论坛

如何让该函数返回第一个字符?

hffjhhh 发布于 2019-10-30 22:38, 1528 次点击
比如当输入字符'abc'按回车后,结果打印了字符'c'.如何让get_first()函数返回字符'a'?而不是返回字符'c'.
程序代码:
#include<stdio.h>
char get_first(void){
    char ch,ch1;
    while((ch=getchar())!='\n'){
        ch1=ch;
        continue;
    }
    return ch1;
}
int main(void){
    char a;
    a=get_first();
    printf("%c",a);
    return 0;
}
5 回复
#2
zbjzbj2019-10-30 23:08
char get_first(void)
{
    char ch,ch1;
    int sgn=1;
    while((ch=getchar())!='\n' && sgn)
        {
            ch1=ch;
            sgn=0;
        }
    return ch1;
}
#3
hffjhhh2019-10-31 13:07
以下是引用zbjzbj在2019-10-30 23:08:48的发言:

char get_first(void)
{
    char ch,ch1;
    int sgn=1;
    while((ch=getchar())!='\n' && sgn)
        {
            ch1=ch;
            sgn=0;
        }
    return ch1;
}

上面while((ch=getchar())!='\n' && sgn)中的&& sgn是什么意思?
#4
hffjhhh2019-10-31 22:34
回复 楼主 hffjhhh
顶一下
#5
hffjhhh2019-11-02 11:32
回复 2楼 zbjzbj
程序代码:
char get_first(void)
{
    char ch,ch1;
    int sgn=1;
    while((ch=getchar())!='\n' && sgn)
        {
            ch1=ch;
            sgn=0;
        }
    return ch1;
}

这行while((ch=getchar())!='\n' && sgn)中的&& sgn在这里是什么意思?
为什么这段代码加了变量sgn之后就会使函数返回输入的第一个字符?如果是下面这样为什么就无法返回第一个字符?
程序代码:
char get_first(void){
    char ch,ch1;
    while((ch=getchar())!='\n'){
        ch1=ch;
        continue;
    }
    return ch1;
}

谁来回答下.
#6
纯蓝之刃2019-11-02 19:24
ch=getchar()将缓存中的字符串取出一个字符。
ch=getchar())!='\n'如果取出的字符不是'\n'进入循环。
当取出第一个字符时,sgn初始值是1,也就是第一次进入循环后将sgn置为0,ch1为第一个字符。
之后无论再取出多少个字符,由于sgn为0,进不去循环,ch1将始终为第一个字符的值,知道字符全部取出,返回ch1的值,也就是第一个字符的值。
1