scanf函数

作者: akuan | 来源:发表于2020-11-11 00:50 被阅读0次

正面是一个混合输入字符和数字的程序:

#include <stdio.h>
void display(char cr, int lines, int width);
int main(void) {
    int ch;
    int rows, cols;
    printf("Enter a character and two integers:\n");
    while ((ch = getchar()) != '\n') {
      if (scanf("%d %d",&rows, &cols) != 2)
            break;
      display(ch, rows, cols);
      while (getchar() != '\n')
            continue;
      printf("Enter another character and two integers;\n");
      printf("Enter a newline to quit.\n");
    }
    printf("Bye.\n");
    return 0;
}
void display(char cr, int lines, int width) {
    int row, col;
    for (row = 1; row <= lines; row++) {
        for (col = 1; col <= width; col++)
            putchar(cr);
        putchar('\n');
    }
}
Enter a character and two integers:
|c 1 2
cc
Enter another character and two integers;
Enter a newline to quit.
|! 3 6
!!!!!!
!!!!!!
!!!!!!
Enter another character and two integers;
Enter a newline to quit.
Bye.

getchar()读取所有字符,包括空白、制表符、换行符。
scanf()读取字符时会跳过空白、制表符、换行符。
对于以上代码中while ((ch = getchar()) != '\n')中的getchar()函数,等待从键盘输入,输入c 1 2后,按下Enter键。此时缓冲区是:“'c',␠,1,␠,2,␊”,这时getchar()从缓冲中读取一个字符'c',ch='c',此时缓冲区为“␠,1,␠,2,␊”。紧接着while循环体中if (scanf("%d %d",&rows, &cols) != 2),即scanf函数从缓冲区中读取出匹配模式:"%d %d"的两个元素,这时scanf先跳过␠,然后刚好匹配“1,␠,2”。最后缓冲区只有“␊”了,即'\n'。

相关文章

  • 【C语言笔记】<三>Scanf函数

    Scanf函数介绍 scanf函数是一个阻塞式函数:程序会停在Scanf函数出现的地方,直到接收到的数据才会执行后...

  • 2019-01-05学习一下C呀

    问题1:vs2017中scanf函数报错ANSI C中没有scanf_s(),只有scanf(),scanf()在...

  • C语言中的scanf与scanf_s 以及循环输入的问题解决

    Scanf 在标准C中,scanf提供了键盘输入功能。 scanf函数是一个标准库函数,它的函数原型在头文件“st...

  • scanf函数

    scanf函数在接收字符串时就是这么安排的——遇到空格或回车就认为前面的输入已经完成且有效!

  • scanf函数

    scanf函数 一、是什么? C语言下的scanf()函数是样式化输入函数,也称为阻塞式函数,有C语言自带的库提供...

  • scanf函数

    一,使用目的在程序运行的时候,能让用户输入进而操作 二,特点阻塞线程,在sacnf函数完成之后,才能执行下面的代码...

  • scanf函数

    必须用&告诉scanf函数变量的详细地址,才能存储用户输入的数据 利用scanf接收多个数据的时候,输入的内容要求...

  • scanf函数

    正面是一个混合输入字符和数字的程序: getchar()读取所有字符,包括空白、制表符、换行符。scanf()读取...

  • 〔杂谈〕关于scanf方法输入字符类型需要加空格问题分析

    关于scanf函数“%c”前需要加空格问题 如图所见,使用scanf(“%c”)和scanf(“ %c”) 分别输...

  • 11-使用scanf函数需要注意的细节

    1). scanf函数不是printf函数所以后面不要加\n换行. 2). scanf函数后面要写上变量的地址 而...

网友评论

    本文标题:scanf函数

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