位置:首页 > 高级语言 > C语言标准库 > scanf() - C语言库函数

scanf() - C语言库函数

C库函数 int scanf(const char *format, ...)  读取从标准输入格式的输入。 

声明

以下是声明scanf()函数的功能。

int scanf(const char *format, ...)

参数

  • format -- 这是C的字符串,其中包含以下各项中的一个或多个:

    空白字符,非空白字符和格式说明。格式说明符如: [=%[*][width][modifiers]type=] 详细说明如下:

参数 描述
* 这是一个可选的星号表示该数据是从流中被读取的,但忽略,即,它不会存储在相应的参数。
width 这指定在当前读出操作被读取的最大字符数
modifiers Specifies a size different from int (in the case of d, i and n), unsigned int (in the case of o, u and x) or float (in the case of e, f and g) for the data yiibaied by the corresponding additional argument: h : short int (for d, i and n), or unsigned short int (for o, u and x) l : long int (for d, i and n), or unsigned long int (for o, u and x), or double (for e, f and g) L : long double (for e, f and g)
type 的字符,指定将要读取的数据的类型以及它是如何被读取。请参阅下表。

fscanf类型说明:

类型 合格输入 参数类型
c 单字符:读取下一个字符。如果不同宽度从1被指定,函数读取字符宽度,并将它们存储在连续位置的数组作为参数传递。没有空字符在末尾追加。 char *
d 十进制整数:号码任意前面有+或 - 号 int *
e,E,f,g,G 浮点十进制数的小数点,可选择前面+或 - 号,可以选择后跟e或E字符和一个十进制数。两个有效条目的示例是-732.103和7.12e4 float *
o 八进制整数 int *
s 一串字符。这将读取后续字符,直到找到一个空格(空格字符被认为是空白,换行符和标签)。 char *
u 无符号整数。 unsigned int *
x,X 十六进制整数 int *
  • additional arguments -- 根据格式字符串,函数可能会想到一系列的额外的参数,每个包含一个值,而不是插入的格式参数中指定的标记每个%标签,如果有的话。应该有相同数量的%预期值的标签的数量的这些参数的。

返回值

如果成功,写入的字符的总数被返回,否则返回一个负数。

例子

下面的例子演示了如何使用 scanf() 函数功能。

#include <stdio.h>

int main()
{
   char str1[20], str2[30];

   printf("Enter name: ");
   scanf("%s", &str1);

   printf("Enter your website name: ");
   scanf("%s", &str2);

   printf("Entered Name: %s
", str1);
   printf("Entered Website:%s", str2);
   
   return(0);
}

让我们编译和运行上面的程序,这将在交互模式下产生以下结果:

Enter name: admin
Enter your website name: www.gitbook.net

Entered Name: admin
Entered Website: www.gitbook.net