C/C++函数与算法速查宝典
上QQ阅读APP看书,第一时间看更新

2.1 字符输入/输出函数

C语言中的字符输入/输出函数主要接受用户从键盘输入的字符或在屏幕上输出字符。

2.1.1 getch函数和getche函数──接受从键盘输入的字符

1.函数原型
int getch();
int getche();
2.函数功能

getch函数和getche函数的功能都是接受从键盘输入的字符。

3.函数的返回值

getch函数和getche函数的返回值都是通过键盘输入的字符。

4.函数范例
/********************************************
*范例编号:02_01
*范例说明:接受从键盘输入的字符
*********************************************/
01    #include <stdio.h>
02    #include <conio.h> 
      #include <stdlib.h> 
      void main()
03    {
04         char ch;
05         printf(“请输入一个字符:\n”);
06         ch=getch();
07         printf(“\n输入的字符是:%c\n”,ch);
08         printf(“请输入一个字符:\n”);
09         ch=getche();
10         printf(“\n输入的字符是:%c\n”,ch);
11         system(“pause”);
12    }

该函数范例的运行结果如图2-1所示。

图2-1 函数范例的运行结果

5.函数解析

(1)在C语言中,getch函数和getche函数的原型都在stdio.h中;在C++中,getch函数和getche函数的原型都在conio.h中。

(2)getch函数与getche函数的区别:getch函数接受输入的字符但不显示在屏幕上,而getche函数则接受输入的字符并显示在屏幕上。

(3)getch函数和getche函数一次只能接受单个字符。

(4)getch函数和getche函数都不能接受键盘上的功能键和方向键。

2.1.2 getchar函数──接受一个字符并显示在屏幕上

1.函数原型
int getchar();
2.函数功能

getchar函数接受从键盘输入的字符并显示在屏幕上。

3.函数的返回值

函数的返回值是通过键盘输入的字符。

4.函数范例
/********************************************
*范例编号:02_02
*范例说明:接受通过键盘输入的字符
*********************************************/
01    #include <stdio.h>
02    #include <stdlib.h> void main()
03    {
04         char ch;
05         int count=0;
06         printf(“请输入一个文本串:”);
07         while((ch=getchar())!=’\n’) 
08         {
09              putchar(ch);
10              count++;
11         }
12         printf(“\n共输入了%d个字符!”,count);
13         system(“pause”);
14    }

该函数范例的运行结果如图2-2所示。

图2-2 函数范例的运行结果

5.函数解析

(1)getchar函数并不是直接从键盘读取字符,而是从键盘缓冲区读取字符。当用户通过键盘输入字符后,将该字符存放到键盘缓冲区中,直到按下回车键时才从键盘缓冲区读入该字符。

(2)getchar函数与getch函数的区别:getchar函数等待按下回车键后才从键盘缓冲区读入字符;而getch函数则直接接受从键盘输入的字符,不会等待用户按回车键,用户只要按下一个键,getch函数就返回该字符。

2.1.3 gets函数──读取一个字符串

1.函数原型
char *gets(int *str);
2.函数功能

gets函数接受用户从键盘输入的一个字符串并存放到str指向的字符数组中。

3.函数参数

参数str:一个字符指针类型,指输入字符串的首地址。

4.函数的返回值

如果操作成功,则函数返回指向字符串的指针;否则,函数返回空指针NULL。

5.函数范例
/********************************************
*范例编号:02_03
*范例说明:从键盘读取一个字符串
*********************************************/
01    #include <stdio.h>
02    #include <stdlib.h>
03    #include <stdlib.h>
04    void main()
05    {
06         char name[20],*p,*q;
07         p=name;
08         printf(“请输入你的姓名(姓和名中间有一个空格): “);
09         gets(name);
10         printf (“你的姓名是:%s\n”,name);
11         p=name;
12         while(*p!=’ ‘)
13              p++;
14         q=p+1;
15         *p=’\0’;
16         printf(“姓:%s,”,name);
17         printf(“名:%s\n”,q);
18         system(“pause”);
19    }

该函数范例的运行结果如图2-3所示。

图2-3 函数范例的运行结果

6.函数解析

(1)gets函数持续读取字符直到遇到换行符,换行符不会进入字符串,它将被转换为空字符,作为字符串的结束符。

(2)参数str指向的内存单元必须事先分配,否则将出现错误。

(3)在使用gets函数接受用户输入的多个字符串时,可以将参数str定义为字符数组或字符指针类型,这两者是通用的。如果定义为字符指针类型,则需要为字符指针变量分配内存空间。例如,将范例中name对应的代码修改如下。

char *name;
name=(char*)malloc(sizeof(char)*20);

2.1.4 putchar函数──在屏幕上输出一个字符

1.函数原型
int putchar(int ch); 
2.函数功能

putchar函数的功能是在屏幕上输出一个字符ch。

3.函数参数

参数ch:待输出的字符。

4.函数的返回值

调用成功时,函数返回要输出的字符ch;否则,函数返回EOF。

5.函数范例
/********************************************
*范例编号:02_04
*范例说明:在屏幕上输出一个字符
*********************************************/
01    #include <stdio.h>
02    void main()
03    {
04         char str[]=”Welcome to NorthWest University!”;
05         int i=0;
06         printf(“字符串:\n”);
07         while(str[i])
08         {
09             putchar(str[i]);
10             i++;
11         }
12         putchar(‘\n’);
13    }

该函数范例的运行结果如图2-4所示。

图2-4 函数范例的运行结果

6.函数解析

putchar函数的作用与putc(ch,stdout)的相同。在02_04范例的实现中,也可以将putchar函数用putc函数代替,代码如下。

01    #include <stdio.h>
02    void main()
03    {
04        FILE *stream;
05        char *p,ch,str[]=”Welcome to NorthWest University!”;
06        int i;
07        stream=stdout;
 p=str;
08         for(p=str;(ch!=EOF)&&(*p!=’\0’);p++)
09              ch=putc(*p,stream);
 put c(‘\n’,stream);
 system(“pause”);
10    }

2.1.5 puts函数──在屏幕上输出一个字符串

1.函数原型
int puts(const char *str); 
2.函数功能

puts函数的功能是在屏幕上输出一个字符串。

3.函数参数

参数str:指向输出的字符串,即字符串的首地址。

4.函数的返回值

如果调用成功,则函数返回一个非负的值;否则,函数返回EOF。

5.函数范例
/********************************************
*范例编号:02_05
*范例说明:在屏幕上输出一个字符串
*********************************************/
01    #include <stdio.h>
02    #include <stdlib.h>
03    void main()
04    {
05         char str[]=”A beautiful girl!”;
06         puts(“字符串:”);
07         puts(str);
08         puts(str+2);
09         puts(&str[2]);
10         system(“pause”);
11    }

该函数范例的运行结果如图2-5所示。

图2-5 函数范例的运行结果

6.函数解析

(1)参数str可以是字符串常量,也可以是字符数组或字符指针。

(2)puts函数在输出一个字符串后自动加上换行符,字符串最后的结束符不会被输出。

(3)puts函数的作用与2.3.6节中fputs(str,stdout)的相同。