嵌入式Linux标准IO,拷贝文件fgetc()/fputc(),fread()/fwrite()
2018-11-01 10:46
302 查看
文章目录
- 1,按字符输入fgetc(),getc(),getchar()
- 2,按字符输出fputc(),putc(),putchar()
- 3,通过fgetc()/fputc()拷贝文件
- 运行结果
- 通过fread()/fwrite()拷贝文件
- 运行结果
1,按字符输入fgetc(),getc(),getchar()
下列函数用来输入一个字符:
#include <stdio.h>
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar(void);
- 成功时返回读取的字符; 若到文件末尾或出错时返回EOF
- getchar()等同于fgetc(stdin)
2,按字符输出fputc(),putc(),putchar()
下列函数用来输出一个字符:
#include <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
- 成功时返回写入的字符; 出错时返回EOF
- putchar©等同于fputc(c, stdout)
3,通过fgetc()/fputc()拷贝文件
#include <stdio.h> #include <errno.h> #include <string.h> int get_file_size(const char *file); int my_write_file_char(const char *file,const char *mode,char ch); int my_cp_file(const char *src_file,const char *dst_file,const char *mode); int main(int argc, const char *argv[]) { int ch; if(argc <3) { printf("usage:%s <src_file> <dst_file>\n",argv[0]); return -1; } printf("src_total %d bytes\n",get_file_size(argv[1])); ch = fgetc(stdin); my_write_file_char(argv[1],"w",ch); printf("src_total %d bytes\n",get_file_size(argv[1])); ch ='a'; while(ch <= 'z') { my_write_file_char(argv[1],"a+",ch); ch++; } printf("src_total %d bytes\n",get_file_size(argv[1])); printf("dst_total %d bytes\n",get_file_size(argv[2])); my_cp_file(argv[1],argv[2],"w"); printf("dst_total %d bytes\n",get_file_size(argv[2])); return 0; } int get_file_size(const char *file) { int count=0; FILE *fp; if((fp = fopen(file,"r")) == NULL) { perror("get_size_fopen"); //printf("fopen:%NULLs\n",strerror(errno));//errno-----<errno.h>,strerror()------<string.h> return -1; } while(fgetc(fp) != EOF) { count ++; } if(fclose(fp) == EOF) { perror("_get_size_fclose"); return EOF; } return count; } int my_write_file_char(const char *file,const char *mode,char ch) { FILE *fp; if((fp = fopen(file,mode)) == NULL) { perror("write_file_char_fopen"); //printf("fopen:%NULLs\n",strerror(errno));//errno-----<errno.h>,strerror()------<string.h> return -1; } fputc(ch,fp); if(fclose(fp) == EOF) { perror("fclose"); return EOF; } } int my_cp_file(const char *src_file,const char *dst_file,const char *mode) { char ch; FILE *src_fp,*dst_fp; if((src_fp = fopen(src_file,"r")) == NULL) { perror("src_fopen"); return -1; } if((dst_fp = fopen(dst_file,mode)) == NULL) { perror("dst_fopen"); return -1; } while((ch = fgetc(src_fp)) != EOF) { fputc(ch,dst_fp); } if(fclose(src_fp) == EOF) { perror("src_fclose"); return EOF; } if(fclose(dst_fp) == EOF) { perror("dst_fclose"); return EOF; } }
运行结果
通过fread()/fwrite()拷贝文件
int my_cp_file(const char *src_file,const char *dst_file,const char *mode) { const int N = 64; char buf[N]; int n = 0; FILE *src_fp,*dst_fp; if((src_fp = fopen(src_file,"r")) == NULL) { perror("src_fopen"); return -1; } if((dst_fp = fopen(dst_file,mode)) == NULL) { perror("dst_fopen"); return -1; } //size_t fread(void *ptr,size_t size,size_t n,FILE *fp); //size为要读写的流的对象的大小(单位:字节),如:int是4,char是1 while((n = fread(buf,1,N,src_fp)) > 0) { fwrite(buf,1,n,dst_fp);//buf空间为N(64字节),但源文件中不一定有N个字节数据,此处写入实际读出的字节数 } if(fclose(src_fp) == EOF) { perror("src_fclose"); return EOF; } if(fclose(dst_fp) == EOF) { perror("dst_fclose"); return EOF; } }
运行结果
阅读更多
相关文章推荐
- Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs
- 标准I/O:分别用fgetc与fputc,fgets与fputs,fread与fwrite实现文件的复制
- Linux下C语言的文本文件读写(fputc,fgetc,fwrite,fread对文件读写操作)
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
- (转载)C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
- C语言文件读写例题,fgetc,fputc,fgets,fputs,fread,fwrite,fscanf,fprintf
- 标准I/O函数之fopen, fread, fwrite,fgetc,fputc
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- 嵌入式Linux文件IO,标准IO和文件IO的区别,文件描述符,open()函数,close()函数
- 文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- 文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets
- 嵌入式Linux标准IO,time(),localtime(),sleep(),fprintf(),每隔1秒向文件test.txt中写如当前系统时间
- 嵌入式Linux文件IO,read()/write()/lseek(),通过文件IO拷贝文件
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- C语言 文件操作 结构体与文件 fgetc fputc fread fwrite
- fgetc()/fputc()/fgets()/fputs()/fread()/fwrite()/fopen()/fclose() 等C语言文件操作函数
- 嵌入式Linux标准IO,获取文件行数
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind