C 用户输入
用户输入
你已经学习了如何在 C 语言中使用 printf()
函数来输出值。
为了获取用户输入,你可以使用 scanf()
函数:
实例
输出用户输入的数字:
// 创建一个整数变量,用于存储从用户那里获取的数字 int myNum; // 要求用户输入一个数字 printf("Type a number: \n"); // 获取并保存用户输入的数字 scanf("%d", &myNum); // 输出用户输入的数字 printf("Your number is: %d", myNum);
提示:scanf()
函数有两个参数:变量的格式说明符(上例中的 %d
)和引用运算符(&myNum
),它存储变量的内存地址。
提示:您将在下一章中了解有关内存地址和函数的更多信息。
多个输入
scanf()
函数还允许多个输入(以下示例中的整数和字符):
实例
// 创建一个整数变量和一个字符变量 int myNum; char myChar; // 请求用户输入一个数字和一个字符 printf("Type a number AND a character and press enter: \n"); // 获取并保存用户输入的数字和字符 scanf("%d %c", &myNum, &myChar); // 打印数字 printf("Your number is: %d\n", myNum); // 打印字符 printf("Your character is: %c\n", myChar);
获取字符串输入
您还可以获取用户输入的字符串:
实例
输出用户的名字:
// 创建一个字符串 char firstName[30]; // 要求用户输入一些文本 printf("Enter your first name: \n"); // 获取并保存文本 scanf("%s", firstName); // 输出文本 printf("Hello %s", firstName);
注意:在使用 scanf()
处理字符串时,你必须指定字符串/数组的大小(在我们的示例中,我们使用了一个非常大的数字30,但至少我们可以确定它将存储足够的字符来表示名字),并且你不需要使用引用运算符(&
)。
然而,scanf()
函数有一些限制:它将空格(空白符、制表符等)视为终止字符,这意味着它只能显示一个单词(即使你输入了多个单词)。例如:
实例
char fullName[30]; printf("Type your full name: \n"); scanf("%s", &fullName); printf("Hello %s", fullName); // 输入你的全名:Bill Gates // Hello Bill
从上面的示例中,你期望程序打印出 "Bill Gates",但它只打印出 "Bill"。
这就是为什么在处理字符串时,我们经常使用 fgets()
函数来读取一行文本。请注意,你必须包含以下参数:字符串变量的名称、sizeof(string_name)
和 stdin
:
实例
char fullName[30]; printf("Type your full name: \n"); fgets(fullName, sizeof(fullName), stdin); // 使用 fgets() 读取一行,包括空格 printf("Hello %s", fullName); // 输入你的全名:Bill Gates // Hello Bill Gates
使用 scanf()
函数获取单个单词作为输入,并使用 fgets()
获取多个单词。