C语言-输入输出

person c猿人    watch_later 2024-07-29 18:10:38
visibility 192    class 输入输出    bookmark 专栏

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

标准输入输出

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;
}
  • 注意:在读取字符时,通常需要在格式说明符前加空格,以忽略换行符或空格等。

getsputs函数

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

示例

#include <stdio.h>

int main() {
    char str[100];

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

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

fgetsfputs函数

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

示例

#include <stdio.h>

int main() {
    char str[100];

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

    return 0;
}

文件输入输出

C语言还提供了一组用于文件操作的输入输出函数,包括fopenfclosefreadfwritefprintffscanf等。

打开和关闭文件

  • 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语言的输入输出操作通过标准库提供的函数实现。printfscanf用于格式化输出和输入数据,getsputs用于简单的字符串输入输出,而fgetsfputs用于更安全的输入输出。文件输入输出通过fopenfclosefreadfwrite等函数进行操作。熟练掌握这些输入输出操作是学习C语言编程的重要部分。

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

评论区
评论列表
menu