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 语言中输入输出操作的核心,熟练掌握其中的函数将对编程工作大有裨益。

相关文章
|
算法 数据安全/隐私保护
一文详解 RSA 非对称加密算法
非对称加密算法指的是 加、解密使用不同的密钥,一把为公开的公钥,另一把为私钥。 公钥加密的内容只能由私钥进行解密,反之由私钥加密的内容只能由公钥进行解密。也就是说,这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容只能由对方进行解密。
10107 1
|
弹性计算 人工智能 运维
0代码!2种方式一键部署 DeepSeek 系列模型
DeepSeek 凭借卓越性能和广泛应用场景,获得全球高度关注。DeepSeek-R1-Distill 是基于 DeepSeek-R1 生成的开源小模型,参数规模更小、推理成本更低,且基准测试表现出色。本文以 DeepSeek-R1-Distill-Qwen-7B-GGUF 模型为例,介绍如何通过阿里云 CAP 平台和函数计算 FC 部署 DeepSeek-R1 模型。用户可选择模型服务或应用模版两种方式快速部署,最快 10 分钟完成,最低 0 元起,支持 API 调用及第三方平台集成,具备免运维、弹性伸缩和高可用性,按量付费模式有效降低成本。欢迎点击阅读原文体验部署。
|
存储
C 标准库 - <stdio.h> 详解1
C 标准库 - <stdio.h> 详解
533 0
|
12月前
舵机和电机
【11月更文挑战第12天】
312 3
|
SQL 缓存 自然语言处理
实战案例1:基于C语言的Web服务器实现。
实战案例1:基于C语言的Web服务器实现。
|
Web App开发 JavaScript 小程序
【有问必答】搭建uniapp项目流程手把手教学
本文详细介绍了uniapp项目的搭建流程、组件引入、接口封装及常用配置。作者“狗哥”应博友之邀,分享了其日常开发经验,包括HBuilderX的使用、uview-ui和moment.js的引入与配置、环境变量设置、HTTP请求封装及API接口管理等内容。文章强调理解官方文档的重要性,并提供了具体步骤和示例代码,帮助读者快速掌握uniapp开发技巧。
408 0
【有问必答】搭建uniapp项目流程手把手教学
|
SQL 运维 大数据
大数据实时计算产品的对比测评
在使用多种Flink实时计算产品后,我发现Flink凭借其流批一体的优势,在实时数据处理领域表现出色。它不仅支持复杂的窗口机制与事件时间处理,还具备高效的数据吞吐能力和精准的状态管理,确保数据处理既快又准。此外,Flink提供了多样化的编程接口和运维工具,简化了开发流程,但在界面友好度上还有提升空间。针对企业级应用,Flink展现了高可用性和安全性,不过价格因素可能影响小型企业的采纳决策。未来可进一步优化文档和自动化调优工具,以提升用户体验。
320 0
|
前端开发 JavaScript Java
基于SpringBoot的社区空巢老人健康管理系统的设计与实现
基于SpringBoot的社区空巢老人健康管理系统的设计与实现
479 0
|
关系型数据库 MySQL 数据安全/隐私保护
被我误解的max_connect_errors
谈谈被我误解的max_connect_errors
被我误解的max_connect_errors
|
存储 监控 数据可视化
这10款看板软件,让项目管理更有条理!
10个看板工具推荐,项目管理必备!