ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

编码规范初体验

2021-07-09 20:31:04  阅读:224  来源: 互联网

标签:fp 编码 初体验 return printf 规范 dataAddr nRet dataSize


基于上文进行编程规范:上文.

#include <stdio.h>
#include <stdlib.h>

/*封装一个接口,把数据写入到文件里*/
/*1.注意函数的重用性
  2.注意对于参数的判断
  3.注意格式规范
 */
int saveDataToFile(unsigned char *dataAddr,long dataSize,
                   const char *fileName)
{	
	int nret=0;
	FILE *fp=NULL;
	if (!dataAddr || !fileName)
	{
		printf("wrong dataAddr or fileName\n");
		return -1;
	}
	if (dataSize <= 0)
	{
		printf("wrong dataSize\n");
		return -2;
	}
	fp=fopen(fileName,"wb+");
	if (!fp)
	{
		printf("open file wrong\n");
		return -3;
	}
	nret = fwrite(dataAddr,1,dataSize,fp);
	if (nret < 0)
	{
		printf("write failed\n");
		return -4;
	}
	fclose(fp);
	return 0;
}

/*Y分量数据的值减半 我们也封装成一个接口*/
int halfDataY(const char *dstFileName,const char *srcFileName,
		      long dataSize,long ydataSize)
{
	int		      nRet = 0;
	int 		   nIdx= 0;
	//如果是unsigned int则命名为dwIdx
	unsigned char *dataAddr = NULL;
	FILE          *fp;
	if (!srcFileName || !dstFileName)
	{
		printf("input fileName wrong\n");
		return -1;
	}
	if (dataSize <= 0)
	{
		printf("input dataSize wrong\n");
		return -2;
	}
	dataAddr = (unsigned char *)malloc(dataSize);
	fp = fopen(srcFileName,"rb+");
	if (!fp)
	{
		printf("open file failed\n");
		return -3;
	}
	nRet = fread(dataAddr,1,dataSize,fp);
	if (nRet < 0)
	{
		printf("read file failed\n");
		return -4;
	}
	for (nIdx = 0;nIdx < ydataSize; nIdx++)
	{
		dataAddr[nIdx] = dataAddr[nIdx]/2;
	}
	nRet = saveDataToFile(dataAddr,dataSize,dstFileName);
	if (nRet)
	{
		printf("saveData failed,nRet=%d\n",nRet);
	}
	free(dataAddr);
	fclose(fp);
	return 0;
}

int main()
{
	int nRet = 0;
	halfDataY("new_256x256_yuv420p.yuv","lena_256x256_yuv420p.yuv",
	256*256*3/2,256*256);
	if (nRet)
	{
		printf("halfDataY failed,nRet=%d\n",nRet);
		return -1;
	}
	return 0;
}

标签:fp,编码,初体验,return,printf,规范,dataAddr,nRet,dataSize
来源: https://blog.csdn.net/L132455/article/details/118613846

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有