前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实现getSize()函数

实现getSize()函数

作者头像
我与梦想有个约会
发布2023-10-20 16:17:04
1760
发布2023-10-20 16:17:04
举报
文章被收录于专栏:jiajia_deng

在前面介绍fseek和ftell两个函数的时候就做过这样的一个例子,本文不但有fseek和ftell的实现,还有一个使用了fgets实现的方法。这个例子是一个题目,题目提供了函数原型:

代码语言:javascript
复制
int getSize(const char* filename, unsigned int* size);

完成要求:

1、getSize函数获取参数filename文件的尺寸(文件大小) 2、返回值设定 a、文件若不存在函数返回值返回-1 b、文件若存在,其他错误返回-2 c、函数运行正常返回0 3、若函数正确获得文件的大小,通过size指针将数值写回 4、提交的源码应当可以运行,放可不扣分

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int getSize(const char *szFileName, unsigned int* size);
int getSize2(const char *szFileName, unsigned int* size);
 
int main(int argc, char* argv[])
{
unsigned int size = 0;
// 方法1,使用fgets方式
getSize(“0505_01.vcxproj”, &size);
// 方法2,使用ftell方式
getSize2(“0505_01.vcxproj”, &size);
printf(“%d\n”, size);
system(“pause”);
return 0;
}
 
int getSize2(const char *szFileName, unsigned int* size)
{
FILE *pFile = fopen(szFileName, “r”);
// 文件打开失败,或文件不存在
if (NULL == pFile) return -1;
// 将指针移动到文件末尾
fseek(pFile, 0, SEEK_END);
// 获取指针位置
*size = ftell(pFile);
// 关闭文件
fclose(pFile);
return 0;
}
 
int getSize(const char *szFileName, unsigned int* size)
{
FILE *pFile = fopen(szFileName, “r”);
// 文件打开失败,或文件不存在
if (NULL == pFile) return -1;
 
char buf[1024];
int nLen = 0;
while (fgets(buf, 1024, pFile) != NULL)
{
// 计算读取出来的字符长度
nLen = strlen(buf);
// 如果读取出来的内容最后一个字符是\n那么加1
// 否则就是读到了最后一行且没有\n,所以不加1
if (buf[strlen(buf) - 1] == ‘\n’)
*size += (nLen + 1);
else
*size += nLen;
}
 
fclose(pFile);
return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档