爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      【C语言】0基础教程——文件操作

      首页 知识中心 软件开发 文章详情页

      【C语言】0基础教程——文件操作

      2024-03-29 09:48:26 阅读次数:50

      c语言

      🍁为什么要使用文件

              在上一篇文章里展示了如何构造一个通讯录,可是一旦程序退出后,空间便还给操作系统,不存在了,但是当我我们需要保留下这些文件时又无可奈何,所以这章通过学习文件操作,便可以实现保存信息功能啦。


      🍁什么是文件

      😶‍🌫️文件

      磁盘上的文件即是文件,但我们从文件功能的角度看又往往分为两类

      1.程序文件

      包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。

      2.数据文件

      文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

      我们写代码的时候与文件是什么关系呢?

      看下图

      【C语言】0基础教程——文件操作

              可能有人又不明白啦,为什么写是输出到文件,读是输入到内存里呢?

      首先,可以先问问自己,真的知道什么内存吗?(博主经常听到有人说自己手机内存256G...一提运行内存就说8G)

              比如,你买了个手机,是8G/256G的,这两个数据分别是什么呢?实际上前面那个数值小一点的叫内存,也就是咱平时口中的运行内存,,而后面那个较大的数值呢,叫外存,也就是咱平时说的什么C盘D盘...这些磁盘。

             理解了这些,再结合上图,就不难理解,从文件中读入数据会存入内存的意思了(实际上就是输入缓冲区)。

      😶‍🌫️文件名

      一个文件要有一个唯一的文件标识,以便用户识别和引用。

      文件名包含3部分:文件路径+文件名主干+文件后缀

      例如:c:\code\test.txt

      有些人可能会问,为什么我没有看见文件后缀名呢?

      那不妨看看下图这个选项打开了吗?

      【C语言】0基础教程——文件操作

      为了方便起见,文件标识常被称为文件名。

      😶‍🌫️文件指针

      缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”

      每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。

      这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.

      听着是不是有点懵?什么意思呢?

              通俗的讲啊,这个文件指针是用来维护一块空间的,怎样的一块空间呢?是一个结构体,在stdio.h定义中被声明为FILE

      看以下图解:

      假设我的磁盘中有一个文件叫test.txt这样一个文件,如下图:

      【C语言】0基础教程——文件操作

       一旦当我打开这个文件时,他就会在内存中开辟一块文件信息区(一个结构体,类型是FILE),而FILE ptr(假设创建的变量名为ptr)这个结构体就是这个文件信息区的一块空间(如下图)

      【C语言】0基础教程——文件操作

       想看这个结构体的成员,可以通过VS2013,(2019已经不显示了)如下:

      struct _iobuf 
      {       char *_ptr;
              int   _cnt;
              char *_base; 
              int   _flag;
              int   _file;
              int   _charbuf;
              int   _bufsiz;
              char *_tmpfname;
      };typedef struct _iobuf FILE;

      刚刚提到一旦打开test.c文件就会在内存中创建文件信息区

      文件信息区那这块内存在什么位置呢?

      由什么来维护呢?

              在C语言的程序里通过fopen这个函数可以打开文件,打开成功会后就会返回这块空间起始位置的地址,这块空间类型为FILE,所以返回的地址就是FILE*类型,程序员就可以通过创建一个FILE*的变量来维护这块空间,这就是文件指针。

      下面演示一下如何创建一个指针变量

      FILE* pf;//文件指针变量

              定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件。

      如下图:

      【C语言】0基础教程——文件操作


      🍁相关函数

      😶‍🌫️文件的打开和关闭(fopen,fclose)

      咱先给出语法格式

      //打开文件
      FILE * fopen ( const char * filename, const char * mode );
      //关闭文件
      int fclose ( FILE * stream );

      需要注意以下几点:

              文件读写前要打开文件,读写后要关闭文件;

              ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件;

              在编写文件,打开文件的同时fopen会返回一个指针,若打开成功,则返回该文件在文件信息区的起始空间地址,若打开失败则返回空指针,所以我们为了防止程序出bug,因该这样写(如下代码):

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		printf("%s\n", strerror(errno));
      		return 1;
      	}
      	//处理
      	fclose(ptr);
      	return 0;
      }

      亦或是这样写,如下(报出错误信息即可)

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("fopen");//如果没能打开文件,perror会直接打印错误信息
      		return 1;       //括号里是可以任意写的一个常量字符串
      	}
      	//处理
      	fclose(ptr);
      	return 0;
      }

      这样写真的就够了吗?

              想象一下,fclose可以释放带哦ptr所指向的那块空间,而一旦ptr所指向的空间被释放掉,ptr便成了野指针,所以将ptr置为空指针,如下:

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("fopen");//如果没能打开文件,perror会直接打印错误信息
      		return 1;       //括号里是可以任意写的一个常量字符串
      	}
      	//处理
      	fclose(ptr);
          ptr = NULL;
      	return 0;
      }

      文件有那些打开方式呢?

      【C语言】0基础教程——文件操作

       最常用的便是只读、只写,以下为代码演示:

      例一:只写

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("fopen");//如果没能打开文件,perror会直接打印错误信息
      		return 1;       //括号里是可以任意写的一个常量字符串
      	}
      
      	//处理
      	fprintf(ptr, "hello world");
      
      	//关闭文件
      	fclose(ptr);
      	return 0;
      }

      例二:只读

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	char str[15] = { 0 };
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");//如果没能打开文件,perror会直接打印错误信息
      		return 1;       //括号里是可以任意写的一个常量字符串
      	}
      
      	//处理
      	fprintf(ptr, "hello world");
      
      	//关闭文件
      	fclose(ptr);
      
      	//打开文件
      	FILE* ptr_ = fopen("test.txt", "r");
      	if (ptr_ == NULL)
      	{
      		perror("ptr_");
      		return 1;
      	}
      
      	//处理
      	fgets(str, sizeof(str), ptr_);
      	printf("%s\n", str);
      
      	//关闭文件
      	fclose(ptr_);
      	ptr_ = NULL;
      
      	return 0;
      }

      😶‍🌫️文件的顺序读写

      【C语言】0基础教程——文件操作

      1.fputc

      先看看要求

      【C语言】0基础教程——文件操作

      怎么用呢?

      格式:

      int fputc( int c, FILE *stream );

              c表示要输入的字符,stream表示要被输出的位置

      例一

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");//如果没能打开文件,perror会直接打印错误信息
      		return 1;       //括号里是可以任意写的一个常量字符串
      	}
      
      	//处理
      	char i = 0;
      	for (i = 'a'; i <= 'z'; i++)
      	{
      		fputc(i, ptr);
      	}
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      	
      	return 0;
      }

       

      2. fgetc

      先看看要求

      【C语言】0基础教程——文件操作

       【C语言】0基础教程——文件操作

       怎么用呢?

      格式:

              

      int fgetc( FILE *stream );
      
      

              FILE* stream 表示一个文件指针变量,stream表示流,也就是介于内存和文件信息区的输入缓存区(这里不细讲,不是本篇重点,以后会出相关博客),简而言之就是需要你刚刚打开的文件的指针,返回类型为int。

       例二

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");//如果没能打开文件,perror会直接打印错误信息
      		return 1;       //括号里是可以任意写的一个常量字符串
      	}
      
      	//处理
      	char i = 0;
      	for (i = 'a'; i <= 'z'; i++)
      	{
      		fputc(i, ptr);
      	}
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      	
      	//打开文件
      	FILE* ptr_ = fopen("test.txt", "r");
      	if (ptr_ == NULL)
      	{
      		perror("ptr_");
      		return 1;
      	}
      
      	//处理
      	int ch = 0;//要注意,fgetc返回值是int类型,所以用int来接收
      	while ((ch = fgetc(ptr_)) != EOF)//读取完返回EOF  这里注意优先级,用括号括起来
      	{
      		printf("%c ", ch);
      	}
      
      
      	//关闭文件
      	fclose(ptr_);
      	ptr_ = NULL;
      
      	return 0;
      }

      3.fguts

      先来看看要求

      【C语言】0基础教程——文件操作

       怎么用呢?

      格式

      int fputs( const char *string, FILE *stream );

               string是要被输出的常量字符串,stream是被输出的文件指针;

      例三

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");
      		return 1;
      	}
      
      	//操作
      	fputs("hehe\n", ptr);
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      	return 0;
      }

      4.fgets

      先来看看要求

      【C语言】0基础教程——文件操作

      怎么用呢?

      格式

      char *fgets( char *string, int n, FILE *stream );

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

      例四

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");
      		return 1;
      	}
      
      	//操作
      	fputs("hehe\n", ptr);
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      
      	//打开文件
      	FILE* p = fopen("test.txt", "r");
      	if (p == NULL)
      	{
      		perror("p");
      		return 1;
      	}
      
      	//操作
      	char str[5] = { 0 };
      	fgets(str, 5, p);
      	printf("%s\n", str);
      
      	//关闭文件
      	fclose(p);
      	p = NULL;
      	return 0;
      }

      5.fprintf

      先看看要求

      【C语言】0基础教程——文件操作

      【C语言】0基础教程——文件操作 怎么用呢?

      格式

      int fprintf( FILE *stream, const char *format [, argument ]...);

       这里都可以对比printf的格式

      int printf(const char *format [, argument ]...);

      实际不难看懂,只是多了一个被输出的文件流

      例五

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");
      		return 1;
      	}
      
      	//操作文件
      	fprintf(ptr, "hello world\n");
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      
      	return 0;
      }

      6.fscanf

      先来看看要求

      【C语言】0基础教程——文件操作

      【C语言】0基础教程——文件操作

       怎么用呢?

      格式

      int fscanf( FILE *stream, const char *format [, argument ]... );

              同理和scanf函数对比格式

      int scanf(const char *format [, argument ]... );

      不难理解,也是少了文件指针流

      例6

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");
      		return 1;
      	}
      
      	//操作文件
      	fprintf(ptr, "hello world\n");
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      
      	//打开文件
      	FILE* p = fopen("test.txt", "r");
      	if (p == NULL)
      	{
      		perror("p");
      		return 1;
      	}
      
      	//操作文件
      	char str[20] = { 0 };
      	fscanf(p, "%s", str);//fscanf遇到空格停止读取
      	printf("%s ", str);
      	fscanf(p, "%s", str);
      	printf("%s\n", str);
      
      	//关闭文件
      	fclose(p);
      	p = NULL;
      
      	return 0;
      }

      7.fwrite

      先看看要求

      【C语言】0基础教程——文件操作

      【C语言】0基础教程——文件操作 怎么用呢?

       格式

      size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

              简而言之:将buffer这个任意类型,放入count个以size个字节的大小到stream

      例7

      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");
      		return 1;
      	}
      
      	//操作文件
      	student s = { "chen",19 };
      	fwrite(&s, sizeof(s), 1, ptr);
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      
      	return 0;
      }
      

      8.fread

      先来看看要求

      【C语言】0基础教程——文件操作

      【C语言】0基础教程——文件操作怎么用呢?

      格式

      size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

      简而言之:将stream这个文件流的count个size大小的数据写入buffer中

      例子8

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      typedef struct student
      {
      	char name[15];
      	int age;
      }student;
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror("ptr");
      		return 1;
      	}
      
      	//操作文件
      	student s = { "chen",19 };
      	fwrite(&s, sizeof(s), 1, ptr);
      
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      
      		//打开文件
      	FILE* p = fopen("test.txt", "r");
      	if (p == NULL)
      	{
      		perror("p");
      		return 1;
      	}
      
      	//操作文件
      	student s1 = { 0 };
      	fread(&s1, sizeof(s), 1, p);
      	printf("%s %d\n", , s1.age);
      
      	//关闭文件
      	fclose(p);
      	p = NULL;
      	return 0;
      }

      9.fseek

      先看看要求

      【C语言】0基础教程——文件操作

       怎么用呢?

      格式

      int fseek( FILE *stream, long offset, int origin );

              简而言之:在文件stream里,以为起点origin(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END)),将光标偏移offset个字符;

      例9

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror(ptr);
      		return 0;
      	}
      
      	//处理文件
      	fputs("hellowcdef", ptr);
      	fseek(ptr, 6, SEEK_SET);
      	fputs(" hello world\n", ptr);
      	
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      	return 0;
      }

      10.rewind

      先看看要求

      【C语言】0基础教程——文件操作​

       怎么用呢?

      格式 

      //未保存数据丢失//

      例10

      #include<stdio.h>
      #include<errno.h>
      #include<string.h>
      
      int main()
      {
      	//打开文件
      	FILE* ptr = fopen("test.txt", "w");
      	if (ptr == NULL)
      	{
      		perror(ptr);
      		return 0;
      	}
      
      	//处理文件
      	fputs("world", ptr);
      	rewind(ptr);
      	fputs("hello\n", ptr);
      	
      	//关闭文件
      	fclose(ptr);
      	ptr = NULL;
      	return 0;
      }

      11.feof

              被许多人误用的函数:feof用来判断文件是否结束

              实际上:feof是在文件结束的时候判断文件结束的原因,判断文件是因为遇到文件位结束还是读取失败结束

      • 1. 文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets)例如:
      • fgetc判断是否为EOF.
      • fgets判断返回值是否为NULL.
      • 2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。例如:
      • fread判断返回值是否小于实际要读的个数

      例11

       

      #include <stdio.h>#include <stdlib.h>
       
      int main(void)
      {
          int c; // 注意:int,非char,要求处理EOF
          FILE* fp = fopen("test.txt", "r");
          if(!fp)
         {
              perror("File opening failed");
              return EXIT_FAILURE;
         } //fgetc 当读取失败的时候或者遇到文件结束的时候,都会返回EOF
          while ((c = fgetc(fp)) != EOF) // 标准C I/O读取文件循环
         {
              putchar(c);
         }
      //判断是什么原因结束的
          if (ferror(fp))
              puts("I/O error when reading");
          else if (feof(fp))
              puts("End of file reached successfully");
           fclose(fp);
           fp = NULL;
           return 0;
      }

      🍁文本文件和二进制文件

      • 文本文件
      • { 以ASCII字符的形式存储的文件就是文本文件 };
      • 二进制文件
      • { 数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。 }

      数据在文本文件中和在二进制文件中分别是怎么存储的?

              如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节。

      【C语言】0基础教程——文件操作


      🍁面试题


      对比一组函数
      scanf/fscanf/sscanf
      printf/fprintf/sprintf

      scanf/prinf 是针对标准输入流/标准输出流的 格式化输入/输出
      fscanf/fprintf 是针对所有输入流/所有输出流的 格式化输入/输出
      sscanf/sprintf sscanf是从字符串中读取格式化的数据 sprintf是把格式化的数据输出成(存储到)字符串
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/CYK_byte/article/details/125819330,作者:陈亦康,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:python turtle库 绘制 红旗 代码及效果图

      下一篇:深入学习 Redis - 虽然是单线程,为啥效率这么高,速度这么快呢?

      相关文章

      2025-04-01 09:21:49

      【C语言】探索数据的存储(上篇)

      【C语言】探索数据的存储(上篇)

      2025-04-01 09:21:49
      c语言 , 后端 , 开发语言
      2025-03-31 08:49:58

      算法题:剑指 Offer 40. 最小的k个数(题目+思路+代码+注释)时空 O(N*LogN) O(1) 0ms击败56%、32%用户

      算法题:剑指 Offer 40. 最小的k个数(题目+思路+代码+注释)时空 O(N*LogN) O(1) 0ms击败56%、32%用户

      2025-03-31 08:49:58
      c语言 , leetcode , 算法
      2025-03-24 08:53:06

      【编译原理】-- 递归下降语法分析设计原理与实现(C语言实现)

      【编译原理】-- 递归下降语法分析设计原理与实现(C语言实现)

      2025-03-24 08:53:06
      c语言 , 数据结构
      2025-03-24 08:53:06

      【编译原理实验】 -- 词法分析程序设计原理与实现(C语言实现)

      【编译原理实验】 -- 词法分析程序设计原理与实现(C语言实现)

      2025-03-24 08:53:06
      c语言 , 开发语言
      2024-11-20 09:46:40

      【C语言】字符串函数

      【C语言】字符串函数

      2024-11-20 09:46:40
      c语言 , 函数 , 字符串
      2024-10-24 08:33:12

      辗转相除,用C实现最大公约数,最小公倍数

      辗转相除,用C实现最大公约数,最小公倍数

      2024-10-24 08:33:12
      c++ , c语言 , 算法
      2024-10-24 08:33:12

      C小白书写代码易错提醒、注意要点(2(含刷题要点))

      C小白书写代码易错提醒、注意要点(2(含刷题要点))

      2024-10-24 08:33:12
      c++ , c语言 , 笔记
      2024-10-24 08:33:12

      不多见但是实用的部分C函数(2)

      不多见但是实用的部分C函数(2)

      2024-10-24 08:33:12
      c++ , c语言 , 开发语言
      2024-10-24 08:33:12

      C小白书写代码易错提醒、注意要点(1)

      C小白书写代码易错提醒、注意要点(1)

      2024-10-24 08:33:12
      c++ , c语言
      2024-10-24 08:33:12

      整型的存储:原 反 补码

      整型的存储:原 反 补码

      2024-10-24 08:33:12
      c++ , c语言
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5239525

      查看更多

      最新文章

      【C语言】探索数据的存储(上篇)

      2025-04-01 09:21:49

      算法题:剑指 Offer 40. 最小的k个数(题目+思路+代码+注释)时空 O(N*LogN) O(1) 0ms击败56%、32%用户

      2025-03-31 08:49:58

      【编译原理】-- 递归下降语法分析设计原理与实现(C语言实现)

      2025-03-24 08:53:06

      【编译原理实验】 -- 词法分析程序设计原理与实现(C语言实现)

      2025-03-24 08:53:06

      【C语言】字符串函数

      2024-11-20 09:46:40

      辗转相除,用C实现最大公约数,最小公倍数

      2024-10-24 08:33:12

      查看更多

      热门文章

      C语言结构体与结构体指针的使用

      2023-03-08 10:38:36

      指针(*)、取地址(&)、解引用(*)与引用(&)

      2023-04-10 08:54:19

      20.6.5快速排序头文件的使用

      2023-03-20 02:06:43

      0005 c语言 输入入门(1)

      2023-03-23 07:32:15

      0012 大小写转换 c语言

      2023-03-21 10:30:53

      int a; int* a; int** a; int (*a)[]; int (*a)(int)

      2023-03-08 10:38:36

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      关于串算法中使用free(str->ch);无法执行后继代码的情况

      0021 c语言 整数求和

      c语言实现对一个浮点数的四舍五入

      运用c语言完成简单的猜数字游戏(随机数为1到100)

      c语言:指针作为参数传递

      【算法设计与分析】-- 分治法

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号