scanf()
- 它用于从标准输入(键盘)读取输入(字符、字符串、数字数据)。
- 它用于读取输入,直到遇到空格、换行符或文件结尾(EOF)。
看下面的示例代码:
// C program to see how scanf()
// stops reading input after whitespaces
#include <stdio.h>
int main()
{
char str[20];
printf("enter something\n");
scanf("%s", str);
printf("you entered: %s\n", str);
return 0;
}
运行结果:
Input: geekdocs
Output: geekdocs
Input: Computer science
Output: Computer
gets()
- 用于从标准输入(键盘)读取输入。
- 用于读取输入,直到遇到换行符或文件结尾(EOF)。
// C program to show how gets()
// takes whitespace as a string.
#include <stdio.h>
int main()
{
char str[20];
printf("enter something\n");
gets(str);
printf("you entered : %s\n", str);
return 0;
}
运行结果如下:
Input: geekdocs tutorials
Output: geekdocs tutorials
Input: Computer science
Output: Computer science
它们之间的主要区别是:
scanf()
读取输入直到遇到空格、换行符或文件结尾(EOF),而gets()
读取输入直到遇到换行符或文件结尾(EOF),gets()
在遇到空格时不会停止读取输入而是它 将空格作为字符串。scanf()
可以读取不同数据类型的多个值,而gets()
只会获取字符串数据。
C语言scanf()和gets()的区别如下表所示:
scanf() | gets() |
---|---|
当 scanf() 用于读取字符串输入时,它会在遇到空格、换行符或文件结尾时停止读取 | 当 get() 用于读取输入时,它会在遇到换行符或文件结尾时停止读取输入。它不会在遇到空格时停止读取输入,因为它将空格视为字符串。 |
它用于读取任何数据类型的输入。 | 它仅用于字符串输入。 |
如何使用 scanf() 读取用户的完整句子
实际上可以使用 scanf()
来读取整个字符串。 例如,可以在 scanf()
中使用 %[^\n]s
来读取整个字符串。
// C program to show how to read
// entire string using scanf()
#include <stdio.h>
int main()
{
char str[20];
printf("Enter something\n");
// Here \n indicates that take the input
// until newline is encountered
scanf("%[^\n]s", str);
printf("%s", str);
return 0;
}
上面的代码读取字符串,直到遇到换行符。
Input: geekdocs tutorials
Output: geekdocs tutorials
Input: Computer science
Output: Computer science