c语言的输入函数有哪些?

c语言的输入函数

1、scanf函数

scanf函数遵守格式化(format)原则,所谓格式化,是该函数预先给程序员定义了一批输入格式,程序员可以选择其中的某些格式,遵守这些格式,scanf函数就可以按照指定的格式来接收键盘的输入数据了。

scanf函数只能在控制台程序中使用,有窗口的界面程序无法通过scanf接收按键。当控制台中出现闪烁的光标时,表示程序在等待用户输入数据。在控制台程序中,一般以回车键代表数据输入完毕,下达命令,指示程序开始工作。scanf函数可以接收多个任意类型的数据,但需严格遵守format格式,否则会出错。

1)、一般形式:如图

1.jpg-600

功能:要求用户从键盘上输入指定格式的数据。

说明:如果数据不止一个,应在数据之间用一个或多个空格间隔,也可以用回车键或跳格键tab间隔。

2)、scanf格式控制

格式控制

格式符说明
d用于输入十进制整数
o用于输入八进制形整数
x用于输入十六进制整数
c用于输入一个字符
s用于输入字符串,并将字符串送到一个字符数组中。输入时以非空白字符开始, 第一个空白字符结束。字符串以串结束标志“\0”作为其最后一个字符。
f用于输入实数。输入时用小数点形式或指数形式均可。(输入双精度必须用%lf,否则不能正常输入)
e与f作用相同

附加格式

格式字符说明
*表示本输入项在输入后不赋给相应的变量。(不存储)
l(字母)用于输入长整型和双精度实型数据
m(一个正整数)用于输入长整型和双精度实型数据

3)、scanf函数的格式字符串的组成

  • 格式符

    和printf函数类似,scanf函数的格式字符串以%开始,以一个格式字符结束,中间可以插入附加字符。格式符告诉了scanf函数该读取什么样的数据。

  • 空白符

    空白符可以是空格(space,用空格键输入)、制表符(tab,用Tab键输入)和新行符(newline,用回车键输入),或者它们的组合

  • 非空白符

    除去格式说明符合空白符之外,就是非空白符。非空白符在用户输入的时候,也必须一并输入。非空白符使scanf() 在缓冲区中读一个匹配的字符并将这个字符忽略。例如,”%d,%d”使scanf()先读入一个整数,接着必须要读入一个逗号,读入到逗号后,表示格式匹配,将读入的逗号丢弃,而不像读入的整数存储到某个内存空间。读入逗号后,接着读入另一个整数。如发现不能匹配格式字符串,比如没有读到逗号,scanf()返回,读入失败。

4)、使用scanf注意事项

  • 1)注意变量表列中,应该是变量的地址。变量的地址通过求地址符&得到。所以在写代码时千万不要遗漏&符号。

  • 2)如果格式字符串中有非空白字符,也就是除了格式控制字符和空白字符之外的字符,则用户在输入的时候一定也要输入这些字符。否则将出现不匹配格式控制字符串的情况。为了使用户正确输入,编程时一定要考虑到用户是否清楚如何输入,最好在需要用户输入前提示如何输入的格式。

  • 3)在用%c格式符时,空格字符和转义字符都被当作有效字符输入

  • 4)以回车作为下达开始解析命令。整个输入以回车结束。

  • 如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符。

  • 5)scanf解析数据,下列情况认为解析出来一个数据:

  • 读入非字符型数据时,遇到空白字符。有宽度指示时,读入到相应的宽度。如%4d,则只解析4个数字即认为读入这个整数完毕。

  • 6) 读取双精度double浮点数时,最好使用%lf输入,使用%f可能会导致精度损失甚至读取失败。

5)、scanf使用示例

// 1)可以指定输入的数据所占据的字符个数,scanf函数自动按照指示截取所需长度的数据。如:
    int i,j;
    scanf("%3d%3d",&i,&j);  // 输入:1234567↙
    printf("%d,%d",i,j);  // 输出  123,456

// 2)%后面的*格式符,用来表示在解析时,将读入的数据忽略不赋给任何变量。如:
    int i,j;
    scanf("%d %*d %d",&i,&j); // 输入: 123 456 789 
    printf("%d,%d",i,j);    // 输出: 123,789
// 3)输入数据时不能指定精度。如:
    float f;
    scanf("%7.2f",&f); // 输入 123.456 
    printf("%f23",f); // 输出 0.00000023 
// 4) 输入双精度数使用%lf
    // 输入双精度浮点数时,务必用%lf,如下错误
    double db;
    scanf("%f",&db);  //输入: 123.456
    printf("%f",db); // 输出 : 0.000000

2、getchar函数

getchar 函数是得到字符输入函数,其功能是得到用户输入的一个字符。getchar函数是一个标准的C语言库函数,它的函数原型在头文件“stdio.h”中。

getchar函数的一般格式是:

char ch;
ch=getchar();

用户输入的字符就赋给了ch变量。如:

char ch;
ch=getchar();  // 获取输入的字符
printf("%c",ch);

3、gets函数

gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。此函数在stdio.h头文件中定义的。

1)、功能

从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

2)、返回值

读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

3)、示例:

   #include <stdio.h>   
    void main(void)
    {
       char buf[20];  //不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址 ,造成非法访问异常                 
       gets(buf);
       printf("%s\n", buf);
    }

更多web开发知识,请查阅 HTML中文网 !!

以上就是c语言的输入函数有哪些?的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他答疑