美文网首页C语言学习天花板程序语言
C语言从零开始(八)-标准输入输出

C语言从零开始(八)-标准输入输出

作者: 天花板 | 来源:发表于2015-11-08 22:06 被阅读3837次

今天介绍的是最重要的一个功能。标准I/O(输入/输出)包含了如下一些函数:scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等。我们今天着重介绍一些常用的。

之前大家普遍反映知识点过于基础,今天我们调整一下方法,从简单代码入手,帮助大家在练习中学习。

1. printf() 和 scanf()

  • printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。
  • scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。

请看如下代码:

#include <stdio.h>

int main()
{
    int a, b, c;

    scanf("%d%d", &a, &b); // 从键盘输入两个整数
    printf("a = %d b = %d \n", a, b); // 将两个整数输出到屏幕

    scanf("%d", &c); 
    printf("c = %d \n", c);

    return 0;
}

运行结果如下:

一次性输入 分两次输入

由上面两幅图可以看出,同样的代码,不同的输入方式打印出的格式不同。

这两个函数涉及的零散知识较多,只需了解,不要求死记硬背。用到的时候能够通过查找教材或百度找到方法即可。在这里不做具体介绍,请自行学习教材。如有问题欢迎邮件探讨。

2. getchar()与putchar()

  • getchar(): 将用户输入的字符输出到标准输出设备(屏幕)。按【Enter】键后,getchar()函数才会读入第一个字符,并返回该字符常量。

注:由于缓冲区的读取特性,当用户由键盘键入字符时,计算机并不会马上处理,而会暂存到系统的缓冲区(Buffter)内。到按【Enter】键后,getchar()函数才会读入缓冲区的第一个字符。而其它字符继续保留在缓冲区,等待下一个读取字符/字符串的函数来读入。

  • putchar(): 用来输出指定的单一字符。

请看下面这段代码:

#include <stdio.h>

int main()
{
    char c, s[20];
    printf("Enter a string: ");
    c = getchar();
    printf("Read the remaining from the buffer\n");
    scanf("%s", s);

    putchar(c);
    putchar('\n');
    printf("%s \n", s);

    return 0;
}

运行结果:

运行结果

3. getche()与getch()

  • getche(): 该函数会由键盘输入一个字符,返回给调用者,并在屏幕上显示读入的字符。由于它并不读取缓冲区的字符,只要用户输入字符,getche()函数会立刻读取,而不需等待按【Enter】键。通常用于程序中只需用户输入一个字符,即可往下继续执行的情形。

  • getch(): 它与getche()的区别是,getch()不需将所输入的字符显示到屏幕上。

请看下面代码:

#include <stdio.h>

int main()
{
    char c1, c2;

    printf("Press any key to exit");
    c1 = getche();
    putchar('\n');

    printf("Press any key once more to exit");
    c2 = getch();
    putchar('\n');

    printf("The character getche() read: %c \n", c1);
    printf("The character getch() read: %c \n", c2);

    return 0;
}

执行结果:

执行结果

4. gets()与puts()

  • gets()

scanf输入字符串可以配合%s格式,但缺点是当遇到字符串中有空白或tab字符时,会自动视为串输入结束。因此不适合输入包含空白/tab字符的字符串。这时gets()函数就可解决该问题。

gets()函数会将用户整段字符串响应到标准输出设备(屏幕)上,当用户按下【Enter】键时,会读取缓冲区的所有字符并存放到指定字符数组中。

比较适合应用在多字符,中文字或长字符串的读取。

  • puts()

用来输出字符串,输出完成后光标自动移到下一行。当输出数据时,会以'\0'字符作为该字符串的结束。

请看下面代码

#include <stdio.h>

int main()
{
    char s[50];

    printf("Enter a string: ");
    gets(s);

    printf("The string you entered: ");
    puts(s);
}

运行结果:

运行结果

今天就简单说到这里。这些函数的具体使用方法我们会在后面的实例代码分析中讲解。

我是天花板,让我们一起在软件开发中自我迭代。
如有任何问题,欢迎与我联系。


上一篇:C语言从零开始(七)-其他运算符
下一篇:C语言从零开始(九)-选择结构

相关文章

  • C语言从零开始(八)-标准输入输出

    今天介绍的是最重要的一个功能。标准I/O(输入/输出)包含了如下一些函数:scanf,printf,getc,pu...

  • 小朋友学C++(23):C与C++的文件输入输出

    一、fopen fopen是C语言中的标准输入输出函数,被包含在 中。C语言中,用fopen来打开文件。函数声明:...

  • 可变参数在宏定义中的应用

    在C语言的标准库中,printf、scanf、sscanf、sprintf这些标准库的输入输出函数,参数都是可变的...

  • c/c++刷题常用

    头文件stdio.hc语言的标准输入输出,常用printf;scanfiostreamc++语言的标准输入输出,重...

  • C语言学习 - 输入输出

    输入输出的概念 标准的输出指屏幕终端,标准的输入指键盘,其它的输入输出可以是文件、打印机、扫描仪等设备。 在C语言...

  • c++代码入门2

    c++ 中的 标准输入输出 2.c++ 中的标准输入输出(字符类型) 3.c++ 中的无限输入(cin,cout)...

  • c++标准输入输出流关系梳理

    输入输出是每一种编程语言必不可少的部分,c++也不例外,下面我们就来说明c++的标准输入输出的前世今生。 1.首先...

  • 维护中-1

    此文章已经移至 C语言从零开始(十)-循环基础for 上一篇:C语言从零开始(九)-选择结构下一篇:C语言从零开始...

  • Android NDK 7 C语言IO

    一、输入和输出流 C 语言的标准输入输出函数都是独立于设备的,不需要考虑如何在特定设备上传输数据;C 语言的库函数...

  • 嵌入式学习笔记19.11.22

    c语言前期知识点总复习 // 标准输入输出头文件 //#include引用 //main()主函数,程序的起点(唯...

网友评论

  • printfkxm:我在linux上用vim输入的getche()和getch()两个函数,提示我未定义是什么意思?
  • 无处安放的岁月:第三个例子中,没有添加头文件#include<conio.h>头文件,是没法编译通过的。老师好像还少讲了个getc和putc,放在一块对比会比较全面,便于记忆。
  • d0009fb7d597:能不能给一个c++安装软件,2771596652@qq.com,谢谢!
  • b9d7fcbb98f5:讲得真心好,很容易理解,刚接触C语言,非常感兴趣,一定要好好学一下
    天花板:@wa_y 加油
  • Roybituls:我想问一下第一个里面有两个scanf,第一个输入结束之后不是还有回车在缓冲区吗,为什么不需要用getchar读掉回车
  • 君自天:天花板楼主,可以讲一下冒泡法,递归,杨辉三角,实参,形参的调用吗?这几个看不太懂
  • 2a17e4f20006:scanf("%s", s);为什么输入函数,s前面没有地址符
  • 加纳利:谢谢 :hibiscus:
  • a24ce88b9a5c:能推荐一些书籍吗帮助学习编程的
    天花板: @a24ce88b9a5c 请看第一篇文章
  • 7cc6090b1626:是应该学的东西 可是我总不愿意去背
    7cc6090b1626: @天花板 嗯 知道啦 / 谢谢回复
    天花板: @你什么时候来 多敲几次就记住了,不用刻意背
  • Kent_Zhang:我来稍加补充,顺便锻炼下自己的表述能力。
    标准输入,标准输出,以及没提到的标准错误。在Unix类系统下都以文件描述符的形式默认打开,并且会有相应的stdin,stdout,以及stderr。相应的文件描述符为0,1,2。
    由此,比如你有一个程序叫test,你想把标准输出输出到log.txt,标准错误输出到err.txt。那么命令行为./test 1>log.txt 2>err.txt。
    在程序中想要输出log到标准错误,可以这样fprintf(stderr, ...),或者直接用宏
    #define LOG_ERROR(...) fprintf(stderr, __VA_ARGS__)
    标准错误可是非常重要的一点啊,不用这个,你怎么区分log中那些事info或者warning而那些是error呢?
    天花板: @Kent_Zhang 后面讲调试方法的时候会考虑讲😊
    Kent_Zhang:@天花板 但是我总觉得讲标准输入输出不讲标准错误,这样内容就不完整啊…………而且,这也不是linux独占,stdio.h定义的接口通常是标准libc接口,即windows,linux,OSX通用。
    天花板:@Kent_Zhang 感谢你的补充。这里的介绍都是针对使用IDE入门的初学者,目前先不涉及Linux的东西,旨在让大家把重点放在能够快速进入在练习中学习的状态。希望你继续关注~
  • 先爔:赞一个
  • 马爷:楼主。c语言最后会讲道最底层吗?会有实例吗?
    马爷:有实例就好。:+1:
    天花板: @马爷 不会太底层,会讲简单的编译原理。实例是重点
  • 4ed6afef78f9:很不错 会一直跟着学

本文标题:C语言从零开始(八)-标准输入输出

本文链接:https://www.haomeiwen.com/subject/qmochttx.html