1> 使用fgets统计一个文件的行号(终端输入文件)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//从终端输入文件
//argc 终端输入的字符串的个数
if(argc != 2){
puts("please enter file");
return -1;
}
FILE *fp = NULL;
//打开一个读文件
if(( fp = fopen(argv[1],"r")) == NULL){
perror("open file error");
return -1;
}
char buf[5];
int count =0;
int count2=0;
while(fgets(buf,sizeof(buf),fp) != NULL){
//判断字符串倒数第二个后面是否是 \n
//判断字符\n 是否在字符中
if(strstr(buf,"\n") !=NULL){
count++;
}
for(int i =0;i<strlen(buf);i++){
if(buf[i] == '\n'){
count2++;
}
}
}
printf("result count = %d \n",count);
printf("result count2 = %d \n",count2);
//关闭文件
fclose(fp);
return 0;
}
2> 使用fgets\fputs拷贝两个文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//从终端输入源文件名及目标文件名
if(argc != 3){
printf("please enter file \n");
return -1;
}
FILE *sourceFile = NULL;
FILE *targetFile = NULL;
//读取源文件写到目标文件
if((sourceFile = fopen(argv[1],"r")) == NULL){
perror("sourceFile open error");
return -1;
}
//写到目标文件中
if(( targetFile = fopen(argv[2],"w")) == NULL){
perror("targetFile open error");
return -1;
}
char buf[5];
//需要读
while(fgets(buf,sizeof(buf),sourceFile) != NULL){
//写文件
fputs(buf,targetFile);
}
//关闭文件
fclose(targetFile);
fclose(sourceFile);
return 0;
}
思维导图: