C 标准库 - <stdio.h> 详解2

简介: C 标准库 - <stdio.h> 详解

C 标准库 - <stdio.h> 详解1:https://developer.aliyun.com/article/1552424

20. char *tmpnam(char *str)

生成并返回一个有效的临时文件名,该文件名之前是不存在的。

#include <stdio.h>

int main() {
    char buffer[L_tmpnam];

    tmpnam(buffer);
    printf("Temporary file name: %s\n", buffer);
    return 0;
}

21. int fprintf(FILE *stream, const char *format, ...)

发送格式化输出到流 stream 中。

#include <stdio.h>

int main() {
    FILE *fp;
    int num = 10;

    fp = fopen("test.txt", "w");
    fprintf(fp, "The number is: %d\n", num);
    fclose(fp);
    return 0;
}

22. int printf(const char *format, ...)

发送格式化输出到标准输出 stdout

#include <stdio.h>

int main() {
    int num = 10;

    printf("The number is: %d\n", num);
    return 0;
}

23. int sprintf(char *str, const char *format, ...)

发送格式化输出到字符串。

#include <stdio.h>

int main() {
    char buffer[20];
    int num = 10;

    sprintf(buffer, "The number is: %d\n", num);
    printf("%s", buffer);
    return 0;
}

24. int vfprintf(FILE *stream, const char *format, va_list arg)

使用参数列表发送格式化输出到流 stream 中。

#include <stdio.h>
#include <stdarg.h>

int my_printf(FILE *stream, const char *format, ...) {
    va_list arg;
    int done;

    va_start(arg, format);
    done = vfprintf(stream, format, arg);
    va_end(arg);

    return done;
}

int main() {
    FILE *fp;
    int num = 10;

    fp = fopen("test.txt", "w");
    my_printf(fp, "The number is: %d\n", num);
    fclose(fp);
    return 0;
}

25. int vprintf(const char *format, va_list arg)

使用参数列表发送格式化输出到标准输出 stdout 中。

#include <stdio.h>
#include <stdarg.h>

int my_printf(const char *format, ...) {
    va_list arg;
    int done;

    va_start(arg, format);
    done = vprintf(format, arg);
    va_end(arg);

    return done;
}

int main() {
    int num = 10;

    my_printf("The number is: %d\n", num);
    return 0;
}

26. int vsprintf(char *str, const char *format, va_list arg)

使用参数列表发送格式化输出到字符串。

#include <stdio.h>
#include <stdarg.h>

int my_sprintf(char *str, const char *format, ...) {
    va_list arg;
    int done;

    va_start(arg, format);
    done = vsprintf(str, format, arg);
    va_end(arg);

    return done;
}

int main() {
    char buffer[20];
    int num = 10;

    my_sprintf(buffer, "The number is: %d\n", num);
    printf("%s", buffer);
    return 0;
}

27. int fscanf(FILE *stream, const char *format, ...)

从流 stream 读取格式化输入。

#include <stdio.h>

int main() {
    FILE *fp;
    int num;

    fp = fopen("test.txt", "r");
    fscanf(fp, "%d", &num);
    printf("The number read from file is: %d\n", num);
    fclose(fp);
    return 0;
}

28. int scanf(const char *format, ...)

从标准输入 stdin 读取格式化输入。

#include <stdio.h>

int main() {
    int num;

    printf("Enter a number: ");
    scanf("%d", &num);
    printf("You entered: %d\n", num);
    return 0;
}

29. int sscanf(const char *str, const char *format, ...)

从字符串读取格式化输入。

#include <stdio.h>

int main() {
    char str[] = "The number is: 10";
    int num;

    sscanf(str, "The number is: %d", &num);
    printf("Extracted number from string: %d\n", num);
    return 0;
}

30. int fgetc(FILE *stream)

从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

#include <stdio.h>

int main() {
    FILE *fp;
    int c;

    fp = fopen("test.txt", "r");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

31. char *fgets(char *str, int n, FILE *stream)

从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[255];

    fp = fopen("test.txt", "r");
    while (fgets(buffer, 255, fp) != NULL) {
        printf("%s", buffer);
    }
    fclose(fp);
    return 0;
}

32. int fputc(int char, FILE *stream)

把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。

#include <stdio.h>

int main() {
    FILE *fp;
    int c;

    fp = fopen("test.txt", "w");
    for (c = 'A'; c <= 'Z'; ++c) {
        fputc(c, fp);
    }
    fclose(fp);
    return 0;
}

33. int fputs(const char *str, FILE *stream)

把字符串写入到指定的流 stream 中,但不包括空字符。

#include <stdio.h>

int main() {
    FILE *fp;

    fp = fopen("test.txt", "w");
    fputs("This is just a test.\n", fp);
    fclose(fp);
    return 0;
}

34. int getc(FILE *stream)

从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

#include <stdio.h>

int main() {
    FILE *fp;
    int c;

    fp = fopen("test.txt", "r");
    while ((c = getc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

35. int getchar(void)

从标准输入 stdin 获取一个字符(一个无符号字符)。

#include <stdio.h>

int main() {
    int c;

    printf("Enter a character: ");
    c = getchar();
    printf("You entered: ");
    putchar(c);
    return 0;
}

36. char *gets(char *str)

从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况

而定。

#include <stdio.h>

int main() {
    char str[255];

    printf("Enter a string: ");
    gets(str);
    printf("You entered: %s\n", str);
    return 0;
}

37. int putc(int char, FILE *stream)

把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。

#include <stdio.h>

int main() {
    FILE *fp;
    int c;

    fp = fopen("test.txt", "w");
    putc('A', fp);
    fclose(fp);
    return 0;
}

38. int putchar(int char)

把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。

#include <stdio.h>

int main() {
    putchar('A');
    return 0;
}

39. int puts(const char *str)

把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。

#include <stdio.h>

int main() {
    puts("This is just a test.");
    return 0;
}

40. int ungetc(int char, FILE *stream)

把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。

#include <stdio.h>

int main() {
    FILE *fp;
    int c;

    fp = fopen("test.txt", "r");
    c = fgetc(fp);
    ungetc(c, fp); // Push the character back to the stream
    printf("Character pushed back: %c\n", fgetc(fp)); // Now read it again
    fclose(fp);
    return 0;
}

41. void perror(const char *str)

把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。

#include <stdio.h>

int main() {
    FILE *fp;

    fp = fopen("nonexistentfile.txt", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }
    fclose(fp);
    return 0;
}

42. int snprintf(char *str, size_t size, const char *format, ...)

格式字符串到 str 中。

#include <stdio.h>

int main() {
    char buffer[20];
    int num = 10;

    snprintf(buffer, 20, "The number is: %d\n", num);
    printf("%s", buffer);
    return 0;
}

以上是 stdio.h 中定义的所有函数的详细介绍和示例。该头文件是 C 语言中输入输出操作的核心,熟练掌握其中的函数将对编程工作大有裨益。

相关文章
|
2月前
|
存储 C语言
C 标准库 - <stdlib.h>详解
`&lt;stdlib.h&gt;` 是 C 语言标准库中的头文件,提供了多种工具和函数,涵盖内存管理、进程控制、转换及随机数生成等功能。其中包括 `malloc`、`calloc` 和 `free` 等内存管理函数,`atoi` 和 `atof` 等转换函数,以及 `rand` 和 `srand` 等随机数生成函数。此外,还提供了 `exit` 和 `atexit` 等程序控制函数,以及 `getenv` 和 `system` 等环境控制函数。
216 11
|
3月前
|
开发者
C 标准库 - <stdio.h>详解
`&lt;stdio.h&gt;` 是 C 标准库中用于处理输入和输出(I/O)的头文件,提供了多种功能,如格式化输入输出、文件操作等。
|
2月前
|
编译器 C语言
宏定义include"stdio.h"可加可不加?
宏定义include"stdio.h"可加可不加?
11 0
|
3月前
C 标准库<ctype.h>详解
`&lt;ctype.h&gt;` 是 C 标准库中的头文件,提供了多种字符处理函数,如判断字符类型(字母、数字等)及大小写转换。广泛应用于文本处理和输入验证。
|
6月前
|
C语言
C语言的标准库:string.h, math.h, stdlib.h
C语言的标准库:string.h, math.h, stdlib.h
|
6月前
|
存储
C 标准库 - <stdio.h> 详解1
C 标准库 - <stdio.h> 详解
134 0
|
6月前
|
存储 程序员
C 标准库 - <stdlib.h>
C 标准库 - <stdlib.h>
|
6月前
|
程序员 C语言
C 标准库 - <ctype.h>
C 标准库 - <ctype.h>
|
7月前
|
存储 自然语言处理 安全
C/C++ (stdio.h)标准库详解
C/C++ (stdio.h)标准库详解
300 0