C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


C 用户输入

用户输入

你已经学过,在 C 语言中,printf() 用于输出值。

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

:

示例

输出用户输入的数字:

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

// 请用户输入一个数字
printf("Type a number: ");

// 获取并保存用户输入的数字
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: ");

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

// 打印该数字
printf("Your number is: %d", myNum);

// 打印字符
printf("Your character is: %c", myChar);
运行示例 »

接收字符串输入

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

示例

输出用户名:

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

// 请用户输入一些文本
printf("Enter your first name: ");

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

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

注意: 当在 scanf() 中处理字符串时,您必须指定字符串/数组的大小(在示例中,我们使用了一个非常大的数字,30,但至少这样我们就能确定它能够存储足够多的字符来表示名字),而且您不必使用引用运算符( & )。

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

示例

char fullName[30];

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

printf("Hello %s", fullName);

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

根据上面的例子,你可能会期望程序打印出"John Doe",但它实际上只打印出"John"。

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

示例

char fullName[30];

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

printf("Hello %s", fullName);

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

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