C语言文件读写学习

C语言文件读写学习

C语言文件读取与写入是通过将文件看成一个字符序列进行读入和写出的。所以读取与写入文件就用到了指针,而这个指针是一个特殊的指针,称为文件指针。
指针名称是:FILE

FILE *fileptr;//文件必须用FILE *ptr指针

对文件指针的文件进行打开操作的函数时fopen/fopen_s

函数简介
函数原型:FILE * fopen(const char * path,const char * mode);
返回值:文件顺利打开后, 指向该流的 文件指针就会被返回。如果文件打开失败则返回NULL,并把 错误代码存在 errno中。
一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。

	//有些地方fopen会unsafe,需要学习下fopen_s的用法
	errno_t err = fopen_s(&fileptr,"file.txt", "w+");
	/*
	errno_t err 定义一个err的返回值 errno_t是int的别名 整形变量,返回1(失败)或者0(成功)
	*/
	if(err == 1)
	{
		exit(1);//exit()内只要不为0都为异常退出
	}
	
	/*
	code
	*/

	//同时有fopen就有fclose,
	fclose(fileptr);

open和close之间就是我们做文件处理的区段

文件处理实操及举例:
平常用的Debugcsv写入

void FileDealDebug(int debuginfo)
{
	FILE *ptrDebug;
	char *DebugFileName = "Debug_info.csv";

	ptrDebug = malloc(sizeof(DebugFileName));//malloc申请内存区

	errno_t err_debug = fopen_s(&ptrDebug, DebugFileName, "a");//"w" 写入方式(覆写)  "r"只读  "a"写入(追加)

	Checkfileerror(err_debug);

	fprintf_s(ptrDebug,"%#.2X,\n",debuginfo);//16进制请用%x  如果想用0x的16进制,用%#X

	fclose(ptrDebug);
}

1.文件名修改及拼接
不同的信息有不同的对应文件名,每次手动改会很麻烦,就想着能不能自动生成想要的文件名

字符串的拼接

strcat_s()
这个函数不知道为什么总出错,暂时不用它了....

sprintf_s()
定义:
sprintf_s(
            _Out_writes_(_BufferCount) _Always_(_Post_z_) char*       const _Buffer,
            _In_                                          size_t      const _BufferCount,
            _In_z_ _Printf_format_string_                 char const* const _Format,
            ...)

这两个函数可以实现这个功能,具体用法如下

char *FileNameDeal(char *filename, char *keywords)
{
	char *filenameOutput;
	char *suffix = ".csv";
	/*空间*/
	filenameOutput = (char *)malloc(strlen(filename)+strlen(keywords)+strlen(suffix)+1);//sizeof异常,输出为4,推测输出为char 的size了
	sprintf_s(filenameOutput,strlen(filename)+strlen(keywords)+strlen(suffix)+1,"%s%s%s",filename,keywords,suffix);//拼接字符串尝试
	
	return filenameOutput;
}

调用后能正常输出想要的拼接后的字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值