C语言输入和输出基础
C语言通过标准库函数实现基本的输入和输出操作。以下是最常用的I/O函数及其用法:
1. 标准输入输出头文件
#include <stdio.h>
2. 输出函数
2.1 printf() - 格式化输出
#include <stdio.h>
int main() {
int num = 10;
float pi = 3.14159;
char ch = 'A';
char str[] = "World";
// 基本输出
printf("Hello, World!\n");
// 输出整数
printf("整数: %d\n", num);
// 输出浮点数
printf("浮点数: %.2f\n", pi); // 保留两位小数
// 输出字符
printf("字符: %c\n", ch);
// 输出字符串
printf("字符串: %s\n", str);
// 多个变量输出
printf("整数: %d, 浮点数: %f, 字符: %c\n", num, pi, ch);
return 0;
}
2.2 putchar() - 输出单个字符
#include <stdio.h>
int main() {
char ch = 'A';
putchar(ch); // 输出字符A
putchar('\n'); // 输出换行
return 0;
}
3. 输入函数
3.1 scanf() - 格式化输入
#include <stdio.h>
int main() {
int age;
float salary;
char name[50];
// 输入整数
printf("请输入年龄: ");
scanf("%d", &age);
// 输入浮点数
printf("请输入工资: ");
scanf("%f", &salary);
// 输入字符串
printf("请输入姓名: ");
scanf("%s", name); // 注意:不能输入带空格的字符串
// 输出结果
printf("\n姓名: %s\n年龄: %d\n工资: %.2f\n", name, age, salary);
return 0;
}
3.2 getchar() - 获取单个字符
#include <stdio.h>
int main() {
char ch;
printf("请输入一个字符: ");
ch = getchar(); // 获取用户输入的第一个字符
printf("您输入的字符是: ");
putchar(ch);
putchar('\n');
return 0;
}
4. 特殊输入情况处理
4.1 输入带空格的字符串
#include <stdio.h>
int main() {
char sentence[100];
printf("请输入一句话(可以包含空格): ");
// 方法1: 使用gets()(不推荐,有安全风险)
// gets(sentence);
// 方法2: 使用fgets()(推荐)
fgets(sentence, sizeof(sentence), stdin);
printf("你输入的是: %s", sentence);
return 0;
}
4.2 清空输入缓冲区
#include <stdio.h>
int main() {
int num;
char ch;
printf("请输入一个整数: ");
scanf("%d", &num);
// 清空输入缓冲区
while (getchar() != '\n');
printf("请输入一个字符: ");
scanf("%c", &ch);
printf("整数: %d, 字符: %c\n", num, ch);
return 0;
}
5. 文件输入输出
#include <stdio.h>
int main() {
FILE *file;
char text[] = "Hello, File!";
char buffer[100];
// 写入文件
file = fopen("example.txt", "w");
if (file != NULL) {
fprintf(file, "%s\n", text);
fclose(file);
}
// 读取文件
file = fopen("example.txt", "r");
if (file != NULL) {
fgets(buffer, sizeof(buffer), file);
printf("文件内容: %s", buffer);
fclose(file);
}
return 0;
}
6. 常用的格式说明符
| 格式符 | 用途 | 示例 |
|---|---|---|
| %d | 十进制整数 | int |
| %f | 浮点数 | float |
| %c | 单个字符 | char |
| %s | 字符串 | char[] |
| %lf | 双精度浮点数 | double |
| %u | 无符号整数 | unsigned int |
| %x | 十六进制整数 | |
| %o | 八进制整数 | |
| %p | 指针地址 | |
| %% | 输出%字符 |
7. 实用示例
#include <stdio.h>
int main() {
int a, b;
float result;
// 输入两个整数
printf("请输入两个整数(用空格分隔): ");
scanf("%d %d", &a, &b);
// 计算和
result = a + b;
printf("和: %d + %d = %.0f\n", a, b, result);
// 计算平均值
result = (a + b) / 2.0;
printf("平均值: ( %d + %d ) / 2 = %.2f\n", a, b, result);
return 0;
}
注意事项
-
使用
scanf()时,变量前要加&(取地址符),但数组名不需要 -
格式化字符串中的格式说明符要与变量类型匹配
-
注意输入缓冲区的问题,特别是混合输入不同类型时
-
使用
fgets()代替gets(),避免缓冲区溢出 -
检查文件操作是否成功(返回值不为NULL)
这些是C语言输入输出的基础,掌握这些内容后,你就可以编写基本的交互式程序了。