当前位置: 首页 > 文档资料 > C 标准库 中文版 >

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

优质
小牛编辑
127浏览
2023-12-01

描述 (Description)

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

声明 (Declaration)

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

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

参数 (Parameters)

  • format - 这是包含以下一项或多项的C字符串 -

    Whitespace character, Non-whitespace character and Format specifiers 。 格式说明符将类似于[=%[*][width][modifiers]type=] ,如下所述 -

Sr.No.论点和描述
1

*

这是一个可选的起始星号表示数据将从流中读取但被忽略,即它不存储在相应的参数中。

2

width

这指定了当前读取操作中要读取的最大字符数。

3

modifiers

指定不同于int的大小(在d,i和n的情况下),unsigned int(在o,u和x的情况下)或float(在e,f和g的情况下)指向的数据相应的附加参数:h:short int(对于d,i和n),或unsigned short int(对于o,u和x)l:long int(对于d,i和n),或unsigned long int(对于o, u和x),或加倍(对于e,f和g)L:长双(对于e,f和g)

4

type

一个字符,指定要读取的数据类型以及预期读取的方式。 见下表。

fscanf类型说明符

类型合格的输入参数类型
c单个字符:读取下一个字符。 如果指定的宽度不同于1,则该函数读取宽度字符并将它们存储在作为参数传递的数组的连续位置中。 最后不附加空字符。char *
d十进制整数:数字可选地以+或 - 符号开头int *
e, E, f, g, G浮点:包含小数点的十进制数字,可选地前面带有+或 - 符号,可选地后跟e或E字符和十进制数字。 有效条目的两个示例是-732.103和7.12e4float *
o八进制整数:int *
s字符串。 这将读取后续字符,直到找到空格(空格字符被视为空白,换行符和制表符)。char *
uUnsigned decimal integer.unsigned int *
x, X十六进制整数int *
  • additional arguments - 根据格式字符串,函数可能需要一系列附加参数,每个参数包含一个要插入的值,而不是format参数中指定的每个%-tag(如果有)。 这些参数的数量应与期望值的%-tags数相同。

返回值 (Return Value)

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

例子 (Example)

以下示例显示了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\n", str1);
   printf("Entered Website:%s", str2);
   return(0);
}

让我们编译并运行上述程序,以交互方式产生以下结果 -

Enter name: admin
Enter your website name: www.iowiki.com
Entered Name: admin
Entered Website: www.iowiki.com