C语言编程基础,输入与输出

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;
}

注意事项

  1. 使用scanf()时,变量前要加&(取地址符),但数组名不需要

  2. 格式化字符串中的格式说明符要与变量类型匹配

  3. 注意输入缓冲区的问题,特别是混合输入不同类型时

  4. 使用fgets()代替gets(),避免缓冲区溢出

  5. 检查文件操作是否成功(返回值不为NULL)

这些是C语言输入输出的基础,掌握这些内容后,你就可以编写基本的交互式程序了。

相关推荐
小π军13 分钟前
最大重叠区间数量
数据结构·算法
镜像视界(浙江)科技有限公司23 分钟前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
泡泡鱼(敲代码中)34 分钟前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
a187927218311 小时前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解
铭哥的编程日记1 小时前
从一道 LeetCode Hard 到吃透一类题:加权区间调度「排序 + 二分 + DP」
算法·leetcode·职场和发展
Logic1011 小时前
C语言/数据结构字符串题解:找出DNA序列中未配对的独特序列——排序+遍历(O(nlogn))
c语言·数据结构·字符串·数组·排序·时间复杂度·算法题
Navigator_Z1 小时前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode
是隼人2 小时前
buuctf-pwn picoctf_2018_shellcode(ret2shellcode)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
潜创微科技2 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
wzdark2 小时前
多维数组在算法设计中的存储映射问题4
算法