文件读写io操作范例
系統io讀寫,copy
int main(int argc, char **argv)
{ ?if(argc != 3)
?{ ??printf("Usage: %s <src> <dst>\n", argv[0]);
??exit(0); ?
}
?int fd1, fd2; ?fd1 = open(argv[1], O_RDONLY);
?fd2 = open(argv[2], O_CREAT | O_TRUNC | O_WRONLY);
?if(fd1 == -1 || fd2 == -1) ?{ ??perror("open() failed"); ??exit(0); ?}
?char buf[100];
?int nread; ?
while(1)
?{ ??bzero(buf, 100); ??nread = read(fd1, buf, 100);
??if(nread == 0) // hits the end of file ?
?{ ???break;
??} ??if(nread == -1) ?
?{ ???perror("read() failed"); ?
??exit(0); ?
?} ? ??
??write(fd2, buf, nread); ?}
?close(fd1); ?close(fd2);
?return 0; }
標準io讀寫操作.........................
fopen-----------------------------------------------------------------fclose范例:
int main(int argc, char **argv) {
?if(argc != 3) ?{
??printf("Usage: %s <src> <dst>\n", argv[0]);
??exit(0);
?}
?FILE *fp1 = fopen(argv[1], "r");
?if(fp1 == NULL) ?{
??fprintf(stderr, "fopen(%s) failed: %s\n", ????argv[1], strerror(errno)); ??
exit(0); ?
}
?FILE *fp2 = fopen(argv[2], "w"); ?if(fp2 == NULL) ?{
??fprintf(stderr, "fopen(%s) failed: %s\n", ????argv[2], strerror(errno)); ?
?exit(0);
?}
?char *buf = calloc(5, 20);
?int nread, nwrite;
?while(1) ?{ ??long begin = ftell(fp1);
??nread = fread(buf, 20, 5, fp1); // n是真正讀取到的數據塊個數 n<=5 ???????? // 100 --> 5 ???????? // 98? --> 4 ???????? // 80? --> 4 ???????? // 21? --> 1 ???????? // 19? --> 0 ???????? // 1? --> 0
??if(nread == 5) // 正常讀取 ?
?{ ???char *p = buf; ??
?while(nread > 0) ???{
????nwrite = fwrite(p, 20, nread, fp2); // nwrite <= n ???
?nread -= nwrite; ?
???p += nwrite*20; ???}
??}
??else if(nread >= 0) // 到達文件尾部 ?
?{ ???long end = ftell(fp1); ?
??fwrite(buf, end-begin, 1, fp2); ?
??break;
??}
??else // 讀取出錯了 ?
?{ ???perror("fread() failed");
???fclose(fp1); ?
??fclose(fp2); ?
??exit(0);
??} ?}
?fclose(fp1);
?fclose(fp2); ?
?return 0; }
fgets--------------------------------------------------------------------fputs范例:
while(1) ?{
??char *tmp = fgets(buf, 20, fp1); // 從fp1讀取一行(最多19字節)放到buf中
??if(tmp == NULL) ??{
???// 1. 遇到了錯誤 ??
?if(ferror(fp1)) ???{
????perror("fgets() failed"); ?
???break; ??
?}
???// 2. 遇到了文件尾 ?
??if(feof(fp1)) ?
??{ ????printf("copy completed.\n"); ?
???break; ??
?} ?
?}
??fputs(buf, fp2);
?}
fgetc----------------------------------------------------------------fputc
while(1) ?{ ??ch = fgetc(fp1);
??if(ch == EOF) ??
{ ???// 1. 遇到錯誤 ?
??if(ferror(fp1)) ???
{ ????perror("fgetc() failed");
????break; ???}
???// 2. 遇到文件尾 ??
?if(feof(fp1)) ???{
????printf("copy completed.\n"); ??
??break; ???} ?
?}
??fputc(ch, fp2);
?}
?
轉載于:https://www.cnblogs.com/defen/p/5242822.html
總結
以上是生活随笔為你收集整理的文件读写io操作范例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原神鸣川鹈饲鱼竿怎么获取?
- 下一篇: 新郎结婚了新娘不是我是什么歌呢