step4 . day1标准IO和文件IO
標準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;
}
?
轉載于:https://www.cnblogs.com/huiji12321/p/11293697.html
總結
以上是生活随笔為你收集整理的step4 . day1标准IO和文件IO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用ImitateLogin模拟登录百度
- 下一篇: step4 . day2标准IO和文件I