作业:
1.使用fgets统计一个文件的行号
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, char const *argv[])
{
while(argc!=2)
{
perror("user:./a.out txt");
return -1;
}
FILE *dest;
char buf[4096];
int line=0;
if((dest=fopen(argv[1],"r"))==NULL)
{
perror("open file:");
return -1;
}
while((fgets(buf,5,dest))!=NULL)//fgets遇到/n和EOF都会停止读取,
{
if(buf[strlen(buf)-1]=='\n')//判断当前数组字符串倒数第二个是不是/n,fgets也会读取
到/n,数组下标从0开始,strlen是从1开始,假设strlen
为5,那么buf是01234,第四个是/n
{
line++;
}
}
printf("%d\n",line);
fclose(dest);
return 0;
}
2.使用fgets和fputs实现拷贝
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, char const *argv[])
{
while(argc!=3)
{
printf("file count error");
printf("usage:./a.out str dest");
return -1;
}
FILE *str;
FILE *dest;
if((str=fopen(argv[1],"r"))==NULL)
{
perror("strfile open");
return -1;
}
if((dest=fopen(argv[2],"w"))==NULL)
{
perror("destfile open");
return -1;
}
char buf[1000];
while((fgets(buf,sizeof(buf),str))!=NULL)//fgets一次存一个字符串,用循环一直存入
{
fputs(buf,dest);
}
fclose(str);
fclose(dest);
return 0;
}