Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C 用户输入


用户输入

你已经了解到 printf() 用于在 C 中 **输出值**。

要获取 **用户输入**,可以使用 scanf() 函数

示例

输出用户输入的数字

// 创建一个整数变量,用于存储我们从用户那里获取的数字
int myNum;

// 提示用户输入一个数字
printf("输入一个数字:\n");

// 获取并保存用户输入的数字
scanf("%d", &myNum);

// 输出用户输入的数字
printf("你的数字是:%d", myNum);
运行示例 »

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

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


多个输入

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

示例

// 创建一个 int 和一个 char 变量
int myNum;
char myChar;

// 提示用户输入一个数字和一个字符
printf("输入一个数字和一个字符,然后按回车键:\n");

// 获取并保存用户输入的数字和字符
scanf("%d %c", &myNum, &myChar);

// 打印数字
printf("你的数字是:%d\n", myNum);

// 打印字符
printf("你的字符是:%c\n", myChar);
运行示例 »

获取字符串输入

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

示例

输出用户的姓名

// 创建一个字符串
char firstName[30];

// 提示用户输入一些文本
printf("输入你的名字:\n");

// 获取并保存文本
scanf("%s", firstName);

// 输出文本
printf("你好 %s", firstName);
运行示例 »

注意:scanf() 中使用字符串时,必须指定字符串/数组的大小(我们在示例中使用了 30,这是一个很大的数字,但这样可以确保它至少可以存储足够的字符来存放名字),并且不必使用引用运算符 (&)。

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

示例

char fullName[30];

printf("输入你的全名:\n");
scanf("%s", &fullName);

printf("你好 %s", fullName);

// 输入你的全名:John Doe
// 你好 John

从上面的示例中,你可能期望程序打印 "John Doe",但它只打印了 "John"。

因此,在处理字符串时,我们通常使用 fgets() 函数来 **读取一行文本**。请注意,你必须包含以下参数:字符串变量的名称、sizeof(字符串名) 和 stdin

示例

char fullName[30];

printf("输入你的全名:\n");
fgets(fullName, sizeof(fullName), stdin);

printf("你好 %s", fullName);

// 输入你的全名:John Doe
// 你好 John Doe
运行示例 »

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


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.