getchar()的用法

1 str[i]=getchar();取一个输入的字符放在str[i]中

你可以输入一串字符再按回车,for循环依次到输入缓冲区中取字符
2 输出str+m-1的意思是从第m个字符开始打印刚刚输入的字符串剩下的内容,因为C数组从0开始计数,所以这里要减一个1

首先是完善并纠正程序中的错误:

#include<cstdio>

#include<string.h>

int main()

{   

    int i, m, n;

    char str[100]={0};

    printf("输入n:");

    scanf("%d",&n);

    getchar();

    for(i=0;i<n;i++)

        str[i]=getchar();

    printf("输出m:");

    scanf("%d",&m);

    printf("%s\n",str+m-1);

   return 0;

}

使用getchar函数还应注意几个问题:

1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。

2.使用本函数前必须包含文件“stdio.h”。

getchar()是到缓冲区读取第一个字符
首先,从键盘输入许多字符,最后回车后,所有字符包括回车放到缓冲区
这时才开始循环执行getchar(),读入一个字符判断是否回车,不是就继续读,是回车就退出循环(之所以说是顺序接受一行字符,是因为它取的始终是缓冲区中第一个字符,每取一个缓冲区的字符少一个,也就是顺序读取了)

/*************************************************************************
    > File Name: getchar2.c
    > Author: Mr.Yang
    > Purpose:演示getchar输入整行文本 
   > Created Time: 2017年05月20日 星期六 09时22分42秒
 ************************************************************************/

#include <stdio.h>
#include <stdlib.h>

#define MAX 80

int main(void)
{
        char buffer[MAX+1];
        int ch = 0;
        int i = 0;

        while((ch = getchar()) != '\n' && i < MAX)/*函数getchar()读取stdin流中的下一个字符,它具备缓冲和回显功能;因此此处由于getchar()是一个缓冲输入函数,在用户按下enter之前,该函数不会收到任何字符,但是用户输入的每个字符都会被回显到屏幕上,用户按下enter键之后,之前输入的所有字符(包括换行符)都被操作系统发给stdin,gechar函数每次返回一个字符,而该字符又被赋值给ch*/
        {
                buffer[i] = ch;
                buffer[i++];
        }
        buffer[i] = '\0';
        printf("%s\n",buffer);

        return 0;
}

函数getchar()读取stdin流中的下一个字符,它具备缓冲和回显功能;因此此处由于getchar()是一个缓冲输入函数,在用户按下enter之前,该函数不会收到任何字符,但是用户输入的每个字符都会被回显到屏幕上,用户按下enter键之后,之前输入的所有字符(包括换行符)都被操作系统发给stdin,gechar函数每次返回一个字符,而该字符又被赋值给ch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值