ydww 发表于 2019-11-15 22:02:26

请问这里getchar是怎么用的

#include<stdio.h>
void de(char str[],char c);
int main()
{
        int repeat;
        int j,i;
        char str,a,c;
        scanf("%d",&repeat);
        for(i=0;i<repeat;i++)
        {
                getchar();//-----------------------------------就是它!
                a=getchar();
                for(j=0;a!='\n';j++)
                {
                        str=a;
                        a=getchar();
                }
                c=getchar();
                str='\0';
                de(str,c);
                getchar();
        }
}

void de(char str[],char c)
{
        int i,j=0;
        char str1;
        printf("result: ");
        for(i=0;str!='\0';i++)
        {
                if(str!=c)
                printf("%c",str);
        }
}

ydww 发表于 2019-11-15 22:22:23

知道了,是吸收上面scanf函数最后的回车

jackz007 发表于 2019-11-15 22:25:53

本帖最后由 jackz007 于 2019-11-15 22:27 编辑

      scanf("%d",&repeat);
. . . . . .
                getchar();
                a=getchar();

      每次使用 scanf() 从键盘读取输入以后,键盘缓冲区会有一个回车符 '\n' 滞留,如果这个时候直接使用 getchar() 读取输入,读取到的将是这个滞留的回车符 '\n',而不是我们预期的键盘输入,所以,就需要空置一个 getchar(),把键盘缓冲区当前滞留的回车符读取出来,直接丢弃,然后,再用 getchar() 读取到的,就会是我们所预期的键盘输入。
页: [1]
查看完整版本: 请问这里getchar是怎么用的