1> 使用fgets统计一个文件的行号
1 #include <stdio.h>
2 #include<string.h>
3 //计算行号
4
5 int main(int argc, const char *argv[])
6 {
7 // if(argc!=2)
8 // {
9 // printf("error");
10 // return 0;
11 // }
12 //定义文件指针
13 FILE *fp=NULL;
14 //已只读的形式打开文件
15 if((fp=fopen("./test.txt","r"))==NULL)
16 { perror("file open fail");
17 return -1;
18 }
19 //以只写的形式打开文件
20 // if((fp=fopen("./test.txt","w"))==NULL)
21 // {
22 // perror("file read fail");
23 // return -1;
24 // }
25 //定义一个字符搬运工
26 char buf[100] ={0};
27 int num =0;
28 while((fgets(buf,sizeof(buf),fp))!=NULL)
29 {
30 if(buf[strlen(buf)-1]=='\n')
31 {
32 num++;
33 }
34 }
35 printf("文件有%d行\n",num);
36 //关闭文件
37 fclose(fp);
38
39 return 0;
40 }
2> 使用fgets、fputs完成两个文件的拷贝
#include <stdio.h>
2 #include<string.h>
3 //计算行号
4
5 int main(int argc, const char *argv[])
6 {
7 if(argc != 3)
8 {
9 printf("error");
10 return 0;
11 }
12 //定义文件指针
13 FILE *srcfp,*destfp;
14 //已只读的形式打开文件
15 if((srcfp=fopen(argv[1],"w"))==NULL)
16 { perror("file open fail");
17 return -1;
18 }
19 //将字符串输出到文件中
20 fputs("hello world",srcfp);
21
22 fclose(srcfp);
23 //以只写的形式打开文件
24 if((destfp=fopen(argv[2],"r"))==NULL)
25 {
26 perror("file read fail");
27 return -1;
28 }
29
30 //定义一个字符搬运工
31 char buf[100]="";
32 while(1)
33 {
34 char *res=fgets(buf,sizeof(buf),srcfp);
35 fputs(res,destfp);
36 if(res==NULL)
37 {
38 printf("fail");
39 break;
40 }
41 printf("%s\n",buf);
42 }
43 //关闭文件
44 fclose(srcfp);
45 fclose(destfp);
46
47 return 0;
3> 向文件中输出当前的系统时间
1 #include <stdio.h>
2 #include<time.h>
3 #include<unistd.h>
4 int main(int argc, const char *argv[])
5 {
6 FILE *fp =NULL;
7 fp =fopen("./test.txt","w");
8 if(fp==NULL)
9 {
10 perror("1110fail");
11 return -1;
12 }
13
14 time_t sys_time =0;
15 time(&sys_time);
16 struct tm* t =localtime(&sys_time);
17 char buf[128]="";
18 while(1)
19 {
20 if(t==NULL)
21 {
22 perror("get-time");
23 return -1;
24 }
25 sprintf(buf,"%4d-%02d-%02d %02d:%02d:%02d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
26 printf("buf = %s\n",buf);
27 fflush(fp);
28 sleep(2);
29
30 }
31
32
33 return 0;
34 }
思维导图