C 用户输入


用户输入

你已经知道了printf()习惯于输出值在C.

要得到用户输入,您可以使用scanf()功能:

示例

输出用户输入的数字:

// Create an integer variable that will store the number we get from the user
int myNum;

// Ask the user to type a number
printf("Type a number: \n");

// Get and save the number the user types
scanf("%d", &myNum);

// Output the number the user typed
printf("Your number is: %d", myNum);
运行示例 »

这个scanf()函数有两个参数:变量的格式说明符(%d在上面的例子中)和引用运算符(&myNum),存储变量的内存地址。

提示:您将了解更多有关内存地址函数在下一章中。


多输入

这个scanf()函数还允许多个输入(以下示例中的整数和字符):

示例

// Create an int and a char variable
int myNum;
char myChar;

// Ask the user to type a number AND a character
printf("Type a number AND a character and press enter: \n");

// Get and save the number AND character the user types
scanf("%d %c", &myNum, &myChar);

// Print the number
printf("Your number is: %d\n", myNum);

// Print the character
printf("Your character is: %c\n", myChar);
运行示例 »

获取字符串输入

您还可以获取用户输入的字符串:

示例

输出用户名:

// Create a string
char firstName[30];

// Ask the user to input some text
printf("Enter your first name: \n");

// Get and save the text
scanf("%s", firstName);

// Output the text
printf("Hello %s", firstName);
运行示例 »

笔记:当使用字符串时scanf(),您必须指定字符串/数组的大小(我们在示例中使用了一个非常高的数字,30,但至少我们确定它将为名字存储足够的字符),并且您不必使用引用运算符 (&)。

但是,那scanf()函数有一些限制:它将空格(空格、制表符等)视为终止字符,这意味着它只能显示单个单词(即使您键入许多单词)。例如:

示例

char fullName[30];

printf("Type your full name: \n");
scanf("%s", &fullName);

printf("Hello %s", fullName);

// Type your full name: John Doe
// Hello John

从上面的示例中,您希望程序打印"John Doe",但它只打印"John"。

这就是为什么在使用字符串时,我们经常使用fgets()功能为读取一行文字。请注意,您必须包含以下参数:字符串变量的名称,sizeof字符串名称), 和stdin:

示例

char fullName[30];

printf("Type your full name: \n");
fgets(fullName, sizeof(fullName), stdin);

printf("Hello %s", fullName);

// Type your full name: John Doe
// Hello John Doe
运行示例 »

使用scanf()函数获取单个单词作为输入,并使用fgets()对于多个单词。