当前位置:首页 » 《资源分享》 » 正文

周末学习,防止入魔!格式化输入输出函数讲解【C语言】_一个计算机生的自我修养

24 人参与  2021年09月13日 15:43  分类 : 《资源分享》  评论

点击全文阅读


前言:

scanf、fscanf、sscanf / printf、fprintf、sprintf 这些函数长得都挺像的,它们分别都是干什么的呢?本篇博客将对这些格式化输入输出函数进行一个讲解。本篇为文件操作章节的延申,新手建议学过文件操作后观看,如果你还没有学文件操作可以先看以下两篇讲解文件操作的博客:

【维生素C语言】文件操作(上)本章为文件操作教学上篇,由浅入深的引入问题,然后逐一介绍知识。将详细讲解文件的打开和关闭、文件的顺序读写并精讲函数部分,初步学习“流”的概念!https://blog.csdn.net/weixin_50502862/article/details/119715195?spm=1001.2014.3001.5501【维生素C语言】文件操作下本章为文件操作教学下篇,将对文件的随机读写进行讲解,详细探讨上篇提到的文本文件和二进制文件。探究文件读取结束的判定、文件缓冲区等问题。https://blog.csdn.net/weixin_50502862/article/details/119807906?spm=1001.2014.3001.5501


 一、printf / fprintf / sprintf

0x00 printf 函数

📂 头文件:#include <stdio.h>

📚 针对标准输出的格式化输出语句 - stdout

🔍 MSDN介绍:printf - C++ Reference

💬 代码演示:printf 的用法

#include <stdio.h>

int main(void) {
    printf("Hello,World!\n");
    int a = 100;
    printf("a=%d", a);

    return 0;
}

🚩 运行结果如下:

0x01 fprintf 函数

📂 头文件:#include <stdio.h>

📚 针对所有输出流的格式化输出语句 - stdout / 文件

🔍 MSDN介绍:fprintf - C++ Reference

💬 代码演示:随便创建一个文件,在文件中写入一段话

#include <stdio.h>

char data[] = "Hey, nice to meet you~";

int main(void) {

    FILE* pf = fopen("test1.txt", "w");
    if (pf == NULL) {
        perror("fopen");
        return 1;
    }
    // 使用fprintf写文件
    fprintf(pf, "%s", data);

    fclose(pf);
    pf = NULL;

    return 0;
}

🚩 (代码成功运行)

0x02 sprintf 函数

📂 头文件:#include <stdio.h>

📚 作用:把一个格式化的数据转换成字符串。

🔍 MSDN介绍:sprintf - C++ Reference

 💬 代码演示:sprintf 的用法

#include <stdio.h>

struct S {
	char arr[10];
	int age;
	float f;
};

int main(void) {
	struct S s = { "hello", 20, 3.14f };
	char buffer[100] = { 0 }; // 用于存放

	sprintf(buffer, "%s %d %f", s.arr, s.age, s.f); // 把这些信息放到buffer中了
	printf("%s\n", buffer); // 将buffer打印出来

	return 0;
}

🚩 运行结果如下:

二、scanf / fscanf / sscanf

0x00 scanf 函数

📂 头文件:#include <stdio.h>

📚 针对标准输入的格式化的输入语句 - stdin

🔍 MSDN介绍:scanf - C++ Reference

💬 代码演示:scanf 的用法

#include <stdio.h>

int main(void) {
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);
    printf("a=%d, b=%d\n", a, b);

    return 0;
}

🚩 输入10 20,运行结果如下:

0x01 fscanf 函数

📂 头文件:#include <stdio.h>

📚 针对所有输入流的格式化输入语句 - stdin / 文件

🔍 MSDN介绍:fscanf - C++ Reference

💬 代码演示:fscanf 的用法

#include <stdio.h>

int data; // 存放读到的数据

int main(void) {
    FILE* pf = fopen("test.txt", "r");
    if (pf == NULL) {
        perror("fopen");
        return 1;
    }

    // 使用fscanf读文件
    fscanf(pf, "%d", &data);

    // 将读到的数据打印
    printf("%d\n", data);

    fclose(pf);
    pf = NULL;

    return 0;
}

 🚩 运行结果如下:

0x02 sscanf 函数

📂 头文件:#include <stdio.h>

📚 作用:从一个字符串中读取一个格式化的数据。

🔍 MSDN介绍:sscanf - C++ Reference

💬 代码演示:利用 sscanfbuffer 字符串中还原出结构体的数据

#include <stdio.h>

struct S {
	char arr[10];
	int age;
	float f;
};

int main(void) {
	struct S s = { "hello", 20, 3.14f };
	struct S tmp = { 0 };

	char buffer[100] = { 0 };
	sprintf(buffer, "%s %d %f", s.arr, s.age, s.f); // 把这些信息放到buffer中了
	printf("%s\n", buffer);

	// 从buffer字符串中还原出一个结构体数据
	sscanf(buffer, "%s %d %f", tmp.arr, &(tmp.age), &(tmp.f));
	printf("%s %d %f\n", tmp.arr, tmp.age, tmp.f);

	return 0;
}

🚩 运行结果如下:

三、总结

scanf        针对标准输入的格式化的输入语句 - stdin

fscanf       针对所有输出流的格式化的输出语句 - stdin / 文件

sscanf      从一个字符串中读取一个格式化的数据

printf         针对标准输出的格式化输出语句 - stdout

fprintf        针对所有输出流的格式化输出语句 - stdout / 文件

sprintf       把一个格式化的数据转换成字符串


参考资料:

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

本章完。


点击全文阅读


本文链接:http://zhangshiyu.com/post/27776.html

文件  格式化  函数  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1