📜  stdio.h - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:35:09.486000             🧑  作者: Mango

stdio.h - C 编程语言

概述

stdio.h 是 C 标准函数库中的头文件,它提供了标准输入输出操作的函数和常量。

在使用 stdio.h 头文件时,需要添加预编译指令 #include <stdio.h> 到程序中。

常用函数

以下是 stdio.h 头文件中常用的函数及其作用:

printf

用于将格式化的数据输出到标准输出流中。

int printf(const char *format, ...);
  • format:格式化字符串,可以包含转义序列和格式标识符。
  • ...:可选的多个参数,用于替换格式标识符。

示例:

int age = 20;
printf("My age is %d.\n", age);

输出:

My age is 20.
scanf

从标准输入流中读取格式化输入,并将读取的值存储到指定的变量中。

int scanf(const char *format, ...);
  • format:格式化字符串,可以包含转义序列和格式标识符。
  • ...:可选的多个指向变量的指针,用于存储读取的值。

示例:

int age;
printf("Enter your age: ");
scanf("%d", &age);
printf("You are %d years old.\n", age);

输入:

Enter your age: 25

输出:

You are 25 years old.
getchar

从标准输入流中读取一个字符。

int getchar(void);

示例:

int c;
printf("Enter a character: ");
c = getchar();
printf("You entered: ");
putchar(c);

输入:

Enter a character: A

输出:

You entered: A
putchar

将一个字符输出到标准输出流中。

int putchar(int c);
  • c:待输出的字符。

示例:

putchar('A');

输出:

A
fgets

从指定的流中读取一行,包括换行符。

char *fgets(char *str, int n, FILE *stream);
  • str:指向存储读取字符串的缓冲区的指针。
  • n:读取的字符数量。
  • stream:可选的指向文件流的指针,如果为 NULL 则读取标准输入流。

示例:

char buffer[256];
printf("Enter a string: ");
fgets(buffer, sizeof(buffer), stdin);
printf("You entered: %s", buffer);

输入:

Enter a string: Hello world!

输出:

You entered: Hello world!
fopen、fclose、fread、fwrite、fseek

用于文件的读写操作。

FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
int fseek(FILE *stream, long int offset, int origin);
  • filename:要读写的文件名。
  • mode:打开文件的模式,包括 "r"(只读)、"w"(写)、"a"(追加)等。
  • stream:指向文件流的指针。
  • ptr:指向要读写的数据的指针。
  • size:每个数据块的字节数。
  • count:要读写的数据块的数量。
  • offset:要移动的字节数。
  • originSEEK_SET(从文件开头偏移)、SEEK_CUR(从当前位置偏移)或 SEEK_END(从文件末尾偏移)之一。

示例:

#include <stdio.h>

int main()
{
    FILE *fp;
    char str[] = "Hello, world!\n";
    char buffer[256];

    // 写入文件
    fp = fopen("test.txt", "w");
    fwrite(str, sizeof(str[0]), sizeof(str)/sizeof(str[0]), fp);
    fclose(fp);

    // 读取文件
    fp = fopen("test.txt", "r");
    fread(buffer, sizeof(char), sizeof(buffer), fp);
    printf("Content of file:\n%s", buffer);

    // 关闭文件
    fclose(fp);

    return 0;
}

输出:

Content of file:
Hello, world!
常用常量

以下是 stdio.h 头文件中常用的常量:

  • NULL:空指针常量。
  • EOF:文件结束符常量。
注意事项
  • 由于 printfscanf 的参数数量不固定,因此在使用时需要特别注意格式字符串和可变参数的匹配。
  • 在使用文件读写函数时,需要特别注意文件指针的位置和状态,以避免错误操作导致文件数据丢失或损坏。
  • 在使用输入函数时,需要考虑输入数据的有效性和正确性,以避免非法输入导致程序出错。