题目:用fgets和fputs计算文件的字符数和行数
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#define ERR_MSG(msg) do{\
printf("line:%d\n",__LINE__);\
perror(msg);\
}while(0)
int count(const char *s)
{
int counter=0;
chararr[32]="";
FILE*fp=fopen(s,"r");
if(NULL==fp){
ERR_MSG("fopen");
return-1;
}
while((fgets(arr,sizeof(arr),fp))!=NULL){
counter+=strlen(arr);
memset(arr,0,sizeof(arr));
}
if(fclose(fp)<0){
ERR_MSG("fclose");
return-1;
}
returncounter;
}
int main(int argc, const char *argv[])
{
intnum=0;
if(argc!=2){
printf("命令不正确,需要传参");
return-1;
}
num=count(argv[1]);
printf("文件大小为%d个字节",num);
return0;
}
#include<stdio.h>
#include<string.h>
#define ERR_MSG(msg) do{\
printf("line:%d\n",__LINE__);\
perror(msg);\
}while(0)
int count(const char *s)
{
int counter=0;
chararr[32]="";
FILE*fp=fopen(s,"r");
if(NULL==fp){
ERR_MSG("fopen");
return-1;
}
while((fgets(arr,sizeof(arr),fp))!=NULL){
if(arr[strlen(arr)-1]=='\n'){
counter++;
}
memset(arr,0,sizeof(arr));
}
if(fclose(fp)<0){
ERR_MSG("fclose");
return-1;
}
returncounter;
}
int main(int argc, const char *argv[])
{
intnum=0;
if(argc!=2){
printf("命令不正确,需要传参");
return-1;
}
num=count(argv[1]);
printf("文件有%d行",num);
return0;
}