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