输入输出 (格式化 非格式化)
非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替, 但这些函数编译后代码少, 相对占用内存也小, 从而提高了速度, 同时使用也比较方便。下面分别进行介绍。
1. puts()和gets()函数
1.1 puts()函数
puts()函数用来向标准输出设备(屏幕)写字符串并换行, 其调用格式为:
puts(s);
其中s为字符串变量(字符串数组名或字符串指针)。
puts()函数的作用与语printf("%s\n", s)相同。
例4:
-
main()
-
{
-
char s[20], *f; /*定义字符串数组和指针变量*/
-
strcpy(s, "Hello! Turbo C2.0"); /*字符串数组变量赋值*/
-
f="Thank you"; /*字符串指针变量赋值*/
-
puts(s);
-
puts(f);
-
}
说明:
(1). puts()函数只能输出字符串, 不能输出数值或进行格式变换。
(2). 可以将字符串直接写入puts()函数中。如:
puts("Hello, Turbo C2.0");
1.2 gets()函数
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。其调用格式为:
gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。
例5:
-
main()
-
{
-
char s[20], *f;
-
printf("What's your name?\n");
-
gets(s); /*等待输入字符串直到回车结束*/
-
puts(s); /*将输入的字符串输出*/
-
puts("How old are you?");
-
gets(f);
-
puts(f);
-
}
说明:
(1). gets(s)函数中的变量s为一字符串。如果为单个字符, 编译连接不会有错误, 但运行后会出现"Null pointer asignmemt"的错误。
2. putchar()、getch()、getche()和getchar()函数
2.1 putchar()函数
putchar()函数是向标准输出设备输出一个字符, 其调用格式为:
putchar(ch);
其中ch为一个字符变量或常量。
putchar()函数的作用等同于printf("%c", ch);
例6:
-
-
main()
-
{
-
char c: /*定义字符变量*/
-
c='B'; /*给字符变量赋值*/
-
putchar(c); /*输出该字符*/
-
putchar('\x42'); /*输出字母B*/
-
putchar(0x42); /*直接用ASCII码值输出字母B*/
-
}
从本例中的连续四个字符输出函数语句可以分清字符变量的不同赋值方法。
2.2 getch()、getche()和getchar()函数
2.2.1 getch()和getche()函数
这两个函数都是从键盘上读入一个字符。其调用格式为:
getch();
getche();
两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche()函数却将读入的字符回显到显示屏幕上。
例7:
-
-
main()
-
{
-
char c, ch;
-
c=getch(); /*从键盘上读入一个字符不回显送给字符变量c*/
-
putchar(c); /*输出该字符*/
-
ch=getche(); /*从键盘上带回显的读入一个字符送给字符变量ch*/
-
putchar(ch);
-
}
利用回显和不回显的特点, 这两个函数经常用于交互输入的过程中完成暂停等功能。
例8:
-
-
main()
-
{
-
char c, s[20];
-
printf("Name:");
-
gets(s);
-
printf("Press any key to confinue...");
-
getch(); /*等待输入任一键*/
-
}
2.2.2 getchar()函数
getchar()函数也是从键盘上读入一个字符, 并带回显。它与前面两个函数的区别在于:getchar()函数等待输入直到按回车才结束, 回车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。
getchar()函数的调用格式为:
getchar();
例9:
-
-
main()
-
{
-
char c;
-
c=getchar(); /*从键盘读入字符直到回车结束*/
-
putchar(c); /*显示输入的第一个字符*/
-
getch(); /*等待按任一健*/
-
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步