在C语言中,scanf
函数从标准输入(键盘)读取用户输入的数据。这是一个常用的函数,但也有很多注意事项和细微差别需要了解。
基本语法:
int scanf(const char *format, ...); 参数: format :一个字符串,指定输入的格式。 ... :可变参数,根据格式字符串来确定类型和数量。
返回值:
该函数返回读取并成功转换的项目数量。如果发生错误或到达文件末尾,则返回一个负值。
例子:
int a; float b; char c[10]; scanf("%d %f %s", &a, &b, c);在这个例子中,我们读取三种类型的数据:一个整数、一个浮点数和一个字符串。每个数据类型都需要一个对应的变量,并且使用 &
操作符来获取变量的地址,因为
注意:
- 在读取字符串时,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来结束字符串。因此,你需要为字符串分配足够的内存,以便存储这个空字符。