ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

step4 . day1标准IO和文件IO

2019-08-03 09:01:05  阅读:289  来源: 互联网

标签:fpd return fps int argv day1 step4 IO fopen


标准IO:ANSI C中定义的一系列用于对IO操作的函数,(只能访问普通文件)

知识点:流指针:文件的操作,标准IO通常通过一个FILE的结构体,称这个结构体为流,他的指针称为流指针(系统自动打开的流:标准输出stdout 标准输入stdin,标准出错stderr),全缓冲、行缓冲、无缓冲fflush

相关函数:fopen  fcloes  perror  strerror  fgetc/fputc  fgets/fputs  getchar/putchar   gets/puts   fread/fwrite   fseek(可以创建指定大小文件)  ftell    rewind  fscanf sscanf  fprintf  sprintf  ferror feof

time localtime ctime  sleep  

文件IO:  低级磁盘IO,无缓冲模式,遵循POSIX标准,可以访问其他种类文件

知识点:文件描述符,和流指针类似,是一个整数表示这个文件的描述

相关函数:open close  read  write  lseek 

目录操作相关函数:pendir  readdir closedir  chmod  fchmod  stat  fstat   getpwuid   getgrpid

这么多函数根本记不全的,放弃吧,一边编程一边看man手册,用着用着就记住了。。。。。

代码:四种模式的文件复制

1.字符复制


#include<stdio.h>

int main(int argc, const char *argv[])
{
if(argc<3){
printf("Usmsg: %s <src_file> <des_file>\n",argv[0]);
return -1;
}
FILE *fps,*fpd;
if((fps = fopen(argv[1],"r")) == NULL){
perror("src_file fopen");
return -1;
}
if((fpd = fopen(argv[2],"w+")) == NULL){
perror("des_file fopen");
return -1;
}

char ch;
while((ch = fgetc(fps)) != -1){
fputc(ch,fpd);
}

fclose(fps);
fclose(fpd);
return 0;
}

2. 行复制


#include <stdio.h>


#define N 32

int main(int argc, const char *argv[])
{
if(argc<3){
printf("Usrmsg:%s <file_name> <file_name>\n",argv[0]);
return -1;
}
FILE *fps,*fpd;
if((fps = fopen(argv[1],"r")) == NULL){
perror("src fopen");
return -1;
}
if((fpd = fopen(argv[2],"w")) == NULL){
perror("dec fopen");
return -1;
}
char buf[N];
while(fgets(buf,N,fps) != NULL){
fputs(buf,fpd);
}
fclose(fps);
fclose(fpd);


return 0;
}

3.按照对象复制


#include<stdio.h>

int main(int argc, const char *argv[])
{
if(argc<3){
printf("Usrmsg:%s <file_name> <file_name>\n",argv[0]);
return -1;
}

FILE *fps,*fpd;
if((fps = fopen(argv[1],"r")) == NULL){
perror("src fopen");
return -1;
}
if((fpd = fopen(argv[2],"w")) == NULL){
perror("des fopen");
return -1;
}

char buf[64];
int n;
while((n = fread(buf,1,64,fps)) > 0){
fwrite(buf,1,n,fpd);
}

fclose(fps);
fclose(fpd);

return 0;
}

4.文件IO复制


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


int main(int argc, const char *argv[])
{
if(argc<3){
printf("Usrmsg:%s <File_name> <File_name>\n",argv[0]);
}

int fds,fdd,n;
char buf[64];

if((fds = open(argv[1],O_RDONLY))== -1 ){
perror("opensrc");
return -1;
}
if((fdd = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0666 ))== -1 ){
perror("opendes");
return -1;
}

while((n = read(fds,buf,64))>0){
write(fdd,buf,n);
}
close(fds);
close(fdd);

return 0;
}

 

标签:fpd,return,fps,int,argv,day1,step4,IO,fopen
来源: https://www.cnblogs.com/huiji12321/p/11293697.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有