🔍 登录 注册

C语言-输入输出

大 大苹果 2024-07-29 algorithm 👁 14 ⏱ 5min

C语言中的输入输出操作主要是通过标准库提供的函数来实现的。常用的输入输出函数包括printf、scanf、gets、puts、fgets、fputs等。这些函数用于与控制台进行交互,或进行文件操作。

标准输入输出

printf函数

printf函数用于格式化输出数据到标准输出(通常是控制台)。

基本语法

int printf(const char *format, ...);
  • format:格式字符串,指定如何格式化输出。
  • ...:可变参数,指定要输出的数据。

常用格式说明符

格式说明符 描述
%d 有符号整数
%u 无符号整数
%f 浮点数
%c 字符
%s 字符串
%x 无符号十六进制
%o 无符号八进制
%p 指针地址

示例

#include <stdio.h>

int main() {
    int a = 10;
    float b = 3.14;
    char c = 'A';
    char str[] = "Hello, World!";

    printf("整数: %d\n", a);
    printf("浮点数: %.2f\n", b);  // 显示两位小数
    printf("字符: %c\n", c);
    printf("字符串: %s\n", str);

    return 0;
}
  • 输出:
    整数: 10
    浮点数: 3.14
    字符: A
    字符串: Hello, World!
    

scanf函数

scanf函数用于从标准输入(通常是键盘)读取格式化数据。

基本语法

int scanf(const char *format, ...);
  • format:格式字符串,指定如何读取输入。
  • ...:指针参数,指定要读取数据的存储位置。

示例

#include <stdio.h>

int main() {
    int num;
    float f;
    char ch;
    char str[50];

    printf("请输入一个整数: ");
    scanf("%d", &num);
    printf("您输入的整数是: %d\n", num);

    printf("请输入一个浮点数: ");
    scanf("%f", &f);
    printf("您输入的浮点数是: %.2f\n", f);

    printf("请输入一个字符: ");
    scanf(" %c", &ch);  // 注意前面的空格,用于跳过上一个输入后的换行符
    printf("您输入的字符是: %c\n", ch);

    printf("请输入一个字符串: ");
    scanf("%s", str);
    printf("您输入的字符串是: %s\n", str);

    return 0;
}
  • 注意:在读取字符时,通常需要在格式说明符前加空格,以忽略换行符或空格等。

gets和puts函数

  • gets:从标准输入读取一行字符串,直到换行符或EOF。
  • puts:向标准输出输出字符串,并自动在末尾添加换行符。

示例

#include <stdio.h>

int main() {
    char str[100];

    printf("请输入一行字符串: ");
    gets(str);  // 从标准输入读取字符串
    printf("您输入的字符串是: ");
    puts(str);  // 输出字符串

    return 0;
}
  • 注意:gets函数不安全,可能导致缓冲区溢出,建议使用fgets。

fgets和fputs函数

  • fgets:从文件流读取字符串,常用于安全读取输入。
  • fputs:将字符串输出到文件流。

示例

#include <stdio.h>

int main() {
    char str[100];

    printf("请输入一行字符串: ");
    fgets(str, sizeof(str), stdin);  // 从标准输入安全读取字符串
    printf("您输入的字符串是: ");
    fputs(str, stdout);  // 输出字符串

    return 0;
}

文件输入输出

C语言还提供了一组用于文件操作的输入输出函数,包括fopen、fclose、fread、fwrite、fprintf、fscanf等。

打开和关闭文件

  • fopen:用于打开文件。
  • fclose:用于关闭文件。

示例

#include <stdio.h>

int main() {
    FILE *fp;

    // 打开文件用于写入
    fp = fopen("example.txt", "w");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }

    // 向文件写入数据
    fprintf(fp, "Hello, File!\n");
    fclose(fp);  // 关闭文件

    // 打开文件用于读取
    fp = fopen("example.txt", "r");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }

    // 从文件读取数据
    char buffer[100];
    fgets(buffer, sizeof(buffer), fp);
    printf("文件内容: %s", buffer);
    fclose(fp);  // 关闭文件

    return 0;
}

读写文件

  • fread:从文件流读取数据。
  • fwrite:向文件流写入数据。

示例

#include <stdio.h>

int main() {
    FILE *fp;
    char data[] = "This is a test.";
    char buffer[50];

    // 打开文件用于写入
    fp = fopen("data.bin", "wb");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }

    // 向文件写入数据
    fwrite(data, sizeof(char), sizeof(data), fp);
    fclose(fp);

    // 打开文件用于读取
    fp = fopen("data.bin", "rb");
    if (fp == NULL) {
        printf("无法打开文件\n");
        return 1;
    }

    // 从文件读取数据
    fread(buffer, sizeof(char), sizeof(data), fp);
    printf("读取到的数据: %s\n", buffer);
    fclose(fp);

    return 0;
}

小结

C语言的输入输出操作通过标准库提供的函数实现。printf和scanf用于格式化输出和输入数据,gets和puts用于简单的字符串输入输出,而fgets和fputs用于更安全的输入输出。文件输入输出通过fopen、fclose、fread、fwrite等函数进行操作。熟练掌握这些输入输出操作是学习C语言编程的重要部分。

如果有任何问题或者需要更多详细解释,请随时告诉我!

读完了?给作者一点支持

本文采用 CC BY 4.0 协议转载 · © 大苹果

评论(0)

登录 后参与评论。

  • 还没有评论,来抢沙发。

🔗 相关文章

动态规划从入门到进阶:状态设计与空间优化的完整方法论

从暴力递归到记忆化与递推,覆盖背包、区间、状态压缩等模型,给出动态规划状态设计与空间优化的完整方法论。

21 天前👍 0

Go 排序算法实战:从冒泡到 TimSort 的复杂度与工程取舍

用 Go 实现九种经典排序,剖析复杂度、稳定性与适用场景,并拆解标准库 sort 背后的 introsort 工程取舍。

21 天前👍 0

RabbitMQ 标准队列

RabbitMQ 标准队列(Classic Queue)是消息传递系统中最基本的队列类型,消息按先进先出(FIFO)的顺序存储和传递。以下是标准队列的常见应用场景和详细说明: ### 1. **任务队列(Task Queue)** - **场景描述**:在后台处理任务时,如图像处理、视频转码、数据分析等,需要将任务分配给多个工作节点进行处理,避免阻塞主应用。 - **应用说明**:在任务队列中,每个任务都会被推送到 RabbitMQ 的标准队列中,多个消费者从队列中获取任务并处理,任务处理完毕后删除队列中的消息。 - **举例**: - **应用**:电商网站后台处理订单数据,如生成发货单、发送确认邮件等。这些任务可以异步处理,以提高系统的响应速度。 - **代码示例(Node.js)**: ```javascript // 生产者:将任务添加到队列 const amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', func

2024/8/11👍 0