先整理程序
1 #include
2 int main(void)
3 {
4 FILE *fsrc = NULL;
5 FILE *fdst = NULL;
6 char ch = 0;
7 fsrc = fopen("src.txt","r");
8 if(NULL == fsrc)
9 {
10 perror("fail to fopen");
11 return -1;
12 }
13 fdst = fopen("dst.txt","w");
14 if(NULL == fdst)
15 {
16 perror("fail to fopen");
17 return -1;
18 }
19 while(1)
20 {
21 ch = fgetc(fsrc); //一个一个拷贝过去 fgetc / fputc
22 if(EOF == ch)
23 {
24 break;
25 }
26 fputc(ch,fdst);
27 }
28 fclose(fsrc);
29 fclose(fdst);
30
31 return 0;
32 }
1 #include
2
3 int main(void)
4 {
5 FILE *a = NULL;
6 FILE *b = NULL;
7 char c[4096]={0};
8 char *d=NULL;
9 a = fopen("src.txt","r");
10 if(NULL == a)
11 {
12 perror("fail to fopen");
13 return -1;
14 }
15 b = fopen("dst.txt","w");
16 if(NULL == b)
17 {
18 perror("fail to fopen");
19 return -1;
20 }
21 while(1)
22 {
23 d = fgets(c,sizeof(c),a); //一行一行的拷贝 fgets /fputs
24 if(NULL == d)
25 {
26 break;
27 }
28 fputs(c,b);
29 }
30
31 fclose(a);fclose(b);
32
33
34 return 0;
35 }
~
1 #include
2
3 int main(void)
4 {
5 size_t d =0;
6 FILE *a=NULL;
7 FILE *b=NULL;
8 char c[1500000] = {0};
9 a = fopen("src.jpg","r");
10 if(NULL == a)
11 {
12 perror("fail to fopen");
13 return -1;
14 }
15 b = fopen("dst.jpg","w");
16 if(NULL == b)
17 {
18 perror("fail to fopen");
19 return -1;
20 }
21 //两种写法
22 /* fread(c,sizeof(c),1,a); //返回值不同 第一种
23 // 要么返回 0 要么返回1 即成功或者失败
24 */
25 while(1)
26 {
27 d = fread(c,1,sizeof(c),a); //有多大返回多大
28 if(0 == d)
29 {
30 break;
31 }
32 fwrite(c,1,d,b);
33 }
34 fclose(a);fclose(b);
35
36 return 0;
37 }
1 #include "head.h"
2 /*
3 int main(void)
4 {
5 ssize_t nret = 0;
6 int b =0;
7 int a =0;
8 char c[200000]={0};
9 a = open("a.jpg",O_RDONLY);
10 if(-1==a)
11 {
12 perror("fail to open");
13 return -1;
14 }
15 b=open("b.jpg",O_WRONLY | O_CREAT | O_TRUNC,0664);
16 if(-1==b)
17 {
18 perror("fail to open");
19 return -1;
20 }
21 while(1)
22 {
23 nret = read(a,c,sizeof(c));
24 if(0 == nret)
25 {
26 break;
27 }
28 }
29 write(b,c,sizeof(c));
30 close(a);close(b);
31 return 0;
32 }
33 */
34 int main(int argc,const char *argv[])
35 {
36 ssize_t nret = 0;
37 int b =0;
38 int a =0;
39 char c[4096]={0};
40 if(argc !=3)
41 {
42 fprintf(stderr,"Usage:./a.out afilename bname\n");
43 return -1;
44 }
45 a = open(argv[1],O_RDONLY);
46 if(-1==a)
47 {
48 perror("fail to open");
49 return -1;
50 }
51 b=open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0664);
52 if(-1==b)
53 {
54 perror("fail to open");
55 return -1;
56 }
57 while(1)
58 {
59 nret = read(a,c,sizeof(c));
60 if(nret<=0)
61 {
62 break;
63 }
64 write(b,c,nret);
65 }
66 close(a);
67 close(b);
68 return 0;
69 }
1 #include "head.h"
2 //递归遍历:
3 int ListDir(const char*pdirname)
4 {
5 DIR *dp =NULL;
6 struct dirent *pp =NULL;
7 char c[4096]={0};
8 dp = opendir(pdirname);
9 if(NULL==dp)
10 {
11 perror("fail to open");
12 return -1;
13 }
14 while(1)
15 {
16 pp=readdir(dp);
17 if(NULL==pp)
18 {
19 break;
20 }
21 if('.'==pp->d_name[0]) //隐藏文件 以点开头的文件叫做隐藏文件
22 {
23 continue; //跳过循环
24 }
25 sprintf(c,"%s/%s",pdirname,pp->d_name); //拼接
26 printf("%s\n",c);
27 if(pp->d_type == DT_DIR)
28 {
29 ListDir(c);
30 }
31 }
32 closedir(dp);
33 return 0;
34 }
35 int main(int argc,const char *argv[])
36 {
37 if(argc!=2)
38 {
39 fprintf(stderr,"Usage:./a.out dirname\n");
40 return -1;
41 }
42 ListDir(argv[1]);
43 return 0;
44 }
1 #include "head.h"
2
3 int main(void)
4 {
5 DIR *dp = NULL;
6 struct dirent *pp = NULL;
7
8 dp = opendir("dir1");
9 if (NULL == dp)
10 {
11 perror("fail to opendir");
12 return -1;
13 }
14
15 while (1)
16 {
17 pp = readdir(dp);
18 if (NULL == pp)
19 {
20 break;
21 }
22
23 if ('.' == *pp->d_name)
24 {
25 continue;
26 }
27
28 printf("%s/%s\n", "dir", pp->d_name);
29 }
30
31 closedir(dp);
32
33 return 0;
34 }
35
主函数 传参
文件IO:
1. lseek
off_t lseek(int fd, off_t offset, int whence);
功能:
重新设定文件描述符的偏移量
参数:
fd:文件描述符
offset:偏移量
whence:
SEEK_SET 文件开头
SEEK_CUR 文件当前位置
SEEK_END 文件末尾
返回值:
成功返回当前偏移量
失败返回-1
目录IO:
1.mkdir
int mkdir(const char *pathname, mode_t mode);
功能:
创建目录文件
参数:
pathname:文件路径
mode:文件的权限
返回值:
成功返回0
失败返回-1
rwx rwx rwx
111 111 111
0777
r: 目录中是否能够查看文件
w: 目录中是否能够新建文件
x: 目录是否能够进入
2.rmdir
int rmdir(const char *pathname);
功能:
删除空目录文件
返回值:
成功返回0
失败返回-1
3.opendir
DIR *opendir(const char *name);
功能:
打开目录获得目录流指针
参数:
name:目录文件路径
返回值:
成功返回目录流指针
失败返回NULL
4.closedir
int closedir(DIR *dirp);
功能:
关闭目录流指针
5.readdir
struct dirent *readdir(DIR *dirp);
功能:
从目录流中读取下一个目录项的结构体信息
参数:
dirp:目录流指针
返回值:
成功返回包含目录项信息的空间首地址
失败返回NULL
读到文件末尾返回NULL
struct dirent {
ino_t d_ino; /* Inode number */
off_t d_off; /* Not an offset; see below */
unsigned short d_reclen; /* Length of this record */
unsigned char d_type; /* Type of file; not supported
by all filesystem types */
char d_name[256]; /* Null-terminated filename */
};
6.chdir
int chdir(const char *path);
功能:
切换当前代码的工作路径
7.getcwd
char *getcwd(char *buf, size_t size);
功能:
获得当前目录的绝对路径
8.access
int access(const char *pathname, int mode);
功能:
检测调用函数的程序对文件是否拥有指定权限
参数:
pathname:文件路径
mode:
R_OK 检测是否拥有读权限
W_OK 检测是否拥有写权限
X_OK 检测是否拥有执行权限
F_OK 检测文件是否存在
返回值:
有该权限返回0
出错返回-1
sprintf
功能:把格式化的数据写入某个字符串
int sprintf( char *buffer, const char *format, [ argument] … );
buffer:char型指针,指向欲写入的字符串地址。
format:char型指针,指向的内存里面存放了格式字符串。
[argument]…:可选参数,可以是任何类型的数据。
返回值:字符串长度(strlen)