7.31IO进程线程——标准IO函数
文章目录
- 一、思维导图
- 二、下载文件(默认文件存在)
- myhead.h
- 代码
- 现象
- 三、计算文件有几行,多大字节(默认文件存在)
- 代码
- 现象
- 四、牛客网刷题
一、思维导图
二、下载文件(默认文件存在)
myhead.h
#ifndef __MYHEAD_H__
#define __MYHEAD_H__#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>#define ERR_MSG(msg) do{perror(msg);printf("%d\n",__LINE__);return -1;}while(0)
#endif
代码
#include <myhead.h>
int main(int argc, const char *argv[])
{FILE *A_fp=fopen("./A_download","r+");//下载目标文件if(A_fp==NULL){printf("A_fopen error..\n");}FILE *B_fp=fopen("./B_download","w+");//下载好的文件if(B_fp==NULL){printf("B_fopen error..\n");}//下载文件char arr[128];while(1){memset(arr,0,sizeof(arr));if(NULL==fgets(arr,sizeof(arr),A_fp)){break;}if(EOF==fputs(arr,B_fp)){printf("fputs error..\n");return -1;}}//将下载好的文件的光标移动至文件的开始rewind(B_fp);//输出下载好的文件while(1){memset(arr,0,sizeof(arr));if(NULL==fgets(arr,sizeof(arr),B_fp)){break;}printf("%s",arr);}//关闭文件if(EOF==fclose(A_fp)){ERR_MSG("fclose error..\n");//自定义宏函数}printf("A_download fclose success..\n");if(EOF==fclose(B_fp)){ERR_MSG("fclose error..\n");}printf("B_download fclose success..\n");return 0;
}
现象
三、计算文件有几行,多大字节(默认文件存在)
代码
#include <myhead.h>
int main(int argc, const char *argv[])
{FILE *A_fp=fopen("./A_download","r+");//打开目标文件if(A_fp==NULL){printf("A_fopen error..\n");}//输出下载好的文件char arr[128];int i=0;long size=0;while(1){memset(arr,0,sizeof(arr));if(NULL==fgets(arr,sizeof(arr),A_fp)){break;}i++;printf("%s",arr);}size=ftell(A_fp);printf("文件有%d行\n",i);printf("size=%ld\n",size);//关闭文件if(EOF==fclose(A_fp)){ERR_MSG("fclose error..\n");//自定义宏函数}printf("A_download fclose success..\n");return 0;
}
现象
shdbakj
sndjs
sdnjsn
msksm
sdsdfwf
文件有5行
size=35
A_download fclose success…
四、牛客网刷题