scanf

发布时间 2023-11-28 20:30:43作者: Lunais

在C语言中,scanf函数从标准输入(键盘)读取用户输入的数据。这是一个常用的函数,但也有很多注意事项和细微差别需要了解。

基本语法

int scanf(const char *format, ...);
参数:

format
:一个字符串,指定输入的格式。
...
:可变参数,根据格式字符串来确定类型和数量。

返回值:

该函数返回读取并成功转换的项目数量。如果发生错误或到达文件末尾,则返回一个负值。

例子:

int a;
float b;
char c[10];
scanf("%d %f %s", &a, &b, c);

在这个例子中,我们读取三种类型的数据:一个整数、一个浮点数和一个字符串。每个数据类型都需要一个对应的变量,并且使用 &操作符来获取变量的地址,因为 

scanf 需要指向内存中的位置存储读取的数据。

注意:

  • 在读取字符串时,scanf 会读取空格之前的所有字符,直到遇到换行符或者空格。因此,如果你的输入中包含多个单词,它们会被视为一个整体。
  • 如果你想读取多个单词,1.可以使用多个 %s 格式,每个格式后面都跟一个空格。2.配合while语句与scanf的返回值。
  • char d[10], e[10];
    scanf("%s %s", &d, &e);
  • char str[20];
    while(scanf("%s",str) == 1)
    {
        printf("%s ",str);
    }
  • scanf 在读取数据时是非常容易出错的。如果用户输入的数据类型与你在 scanf 中指定的不匹配,程序可能会崩溃或者出现未定义的行为。因此,始终要检查 scanf 的返回值,以确保读取的数据是正确的。在读取字符串时,scanf会自动添加一个空字符 \0来结束字符串。因此,你需要为字符串分配足够的内存,以便存储这个空字符