count size and line of a file
#include<stdio.h>
#include<string.h>
int size_file(FILE* fp);
int line_file(FILE* fp);
int main(int argc, const char *argv[])
{
if(argc<2)
{
printf("请输入文件名\n");
return -1;
}
FILE* fp_r=fopen(argv[1],"r");
if(NULL==fp_r)
{
perror("fopen_r");
return -1;
}
//打开另一个文件
FILE* fp_w=fopen(argv[2],"w");
if(NULL==fp_w)
{
perror("fopen_w");
return -1;
}
char c=0;
int i=0;
while(1)
{
c=fgetc(fp_r);
if(EOF==c)
{
break;
}
i++;
fputc(c,fp_w);
}
int k;
printf("%d\n",i);
fclose(fp_r);
FILE* fp_c=fopen(argv[1],"r");
k=line_file(fp_c);
printf("%d\n",k);
fclose(fp_c);
fclose(fp_w);
return 0;
}
int size_file(FILE *fp)
{
char a;
int i=0;
if(NULL==fp){printf("输入有误\n");}
while(1)
{
a=fgetc(fp);
if(a==EOF)
{
break;
}
i++;
}
return i;
}
int line_file(FILE* fp)
{
char a;
int i=0;
if(NULL==fp){printf("输入有误\n");}
while(1)
{
a=fgetc(fp);
if(a==EOF)
{
break;
}
if(a=='\n')
{
i++;
}
}
return i;
result
count size and line of file 2
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#define N 1
//stdIO test
int main(int argc, const char *argv[])
{
//file open
FILE* f1=fopen("./1_test.c","r");
FILE* f2=fopen("./2_test.c","w");
// //file read and write with fprintf and fscanf
// char s1[5];
// scanf("%s",s1);
// printf("s1=%s\n",s1);
// char t1[10];char a;char b;char t2[30];int cursor_ct;
// for(int i=0;i<N;i++)
// {
// // FILE READ
// int r_count=fscanf(f1,"%s%c%s",t1,&a,t2);
//
// int cursor_ct = ftell(f1);
// printf("a=%d\n",a);
// printf("b=%d\n",b);
// printf("t1=%s\n",t1);
//
// printf("c1=%s",t2);
// printf("NUM OF READ:%d\n",r_count);
// printf("cursor_ct=%d",cursor_ct);
// //FILE WRITE
// int w1_count=fprintf(f2,"%s",t1);
// int w2_count=fprintf(f2,"%s",t2);
// fprintf(stdout,"NUM OF WRITE:w1=%d\t w2=%d\n",w1_count,w2_count);
// }
// /
// //fputc fgetc
// char c1;int w1;
// for(int i=0;c1!=EOF;i++)
// {
// //int c1=fgetc(f1);
// c1=fgetc(f1);
// //printf("%c\n",c1);
// w1=fputc(c1,f2);
// }
// int cursor_ct=ftell(f1);
// printf("cursor_ct=%d\n",cursor_ct);
// printf("w1=%d",w1);
// printf("c1=%d\n",c1);
// //
// // fputs fgets
char *r1;char s1[10];bzero(s1,sizeof(s1));int j=0;int k=0;int sum=0;
for(j=0;j<1000;j++)
{
r1=fgets(s1,sizeof(s1),f1);
if(r1==NULL){break;}
printf("r1=%p\n",r1);
printf("s1=%s\n",s1);
printf("length of s1=%ld\n",strlen(s1));
printf("last char=%d\n",s1[sizeof(s1)-1]);
if(s1[strlen(s1)-1]==10)k++;
int i=0;
while(s1[i]!='\0')
{
printf("s1=%d\n",s1[i]);
i++;
}
sum=sum+i;
printf("NUM of i=%d\n",i);
printf("%ld\n",ftell(f1));
}
printf("NUM OF J=%d\n",j);
printf("NUM OF K=%d\n",k);
printf("NUM OF sum=%d\n",sum);
// //FILE CLOSE
fclose(f1);
fclose(f2);
while(1)
sleep(2);
return 0;
}