本文发布于59 天前,其中的信息可能已经过时,如有错误请发送邮件到supper@vcclient.xyz
/*************************************************************************
*
* func name :
* function : 利用标准IO函数接口实现计算一个本地磁盘某个文件的大小,要求文件名通过命令行进行传递,并通过(ls -l)命令进行验证
* argument : None
* return value : None
* authof : wzy
* data : 2026/4/16
* note : None
*
************************************************************************/
int main(int argc, char const *argv[])
{
//1.要求要计算大小的文件的路径需要通过命令行传递给main()函数,需要判断用户传递的参数是否有效
if(2 != argc)
{
printf("argument is invaid!\n");
exit(1);
}
//2.打开文件
FILE *file = fopen(argv[1],"rb"); //"rb" 以二进制方式打开文本,则系统不会对文本中的特殊字符进行解释,而是作为普通字符
//3.错误处理
if (file == NULL)
{
perror("打开文件失败");
exit(1);
}
//4.计算文本数据大小,可以采用循环计数的方式,每次从文本中读取一个字符,直到文本到达末尾
int cnt = 0;
while(1) //feof()返回值:到达文件末尾返回“非0”,未达到文件末尾返回“0”
{
if( fgetc(file) == EOF)
{
printf("end of file");
break;
}
cnt ++;
}
//5.循环终止,则说明计算完成,此时输出文本大小即可
printf("file[%s]:size = %d\n",argv[1],cnt);
printf("argc = %d\n",argc);
return 0;
}