日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件编程练习

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件编程练习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自己實現linux CP指令

實現cp指令的思路:

  • 打開要復制的原文件
  • 讀原文件的內容到buf
  • 打開或者創建要粘貼的文件
  • 將buf里面的內容寫到目標文件
  • 關閉兩個文件

main 函數的標準原型:

main 函數的標準原型應該是 int main(int argc, char *argv[]);argc 是命令行參數的個數。而 argv 是一個指向指針的指針,為什么不是指針數組呢?因為前面講過,函數原型中的[]表示指針而不表示數組,等價于 char **argv 。那為什么要寫成 char *argv[] 而不寫成 char **argv 呢?這樣寫給讀代碼的人提供了有用信息,argv 不是指向單個指針,而是指向一個指針數組的首元素。數組中每個元素都是 char * 指針,指向一個命令行參數字符串。

demo:

#include<stdio.h> int main(int argc,char *argv[])//argc表示參數的個數,argv表示字符串數組是二級指>針 {printf("參數總個數是:%d\n",argc);printf("第一個參數是:%s\n",argv[0]);printf("第二個參數是:%s\n",argv[1]);printf("第三個參數是:%s\n",argv[2]);return 0; }程序運行的結果: fhn@ubuntu:~/linuxfile$ ./cpfile src des 參數總個數是:3 第一個參數是:./cpfile 第二個參數是:src 第三個參數是:des

實現cp指令:

#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdlib.h> #include <unistd.h> #include<string.h> int main(int argc,char *argv[])//argc表示參數的個數,argv表示字符串數組是二級指針 {int fd;int fd2;int size;int n_read;int n_write;char*readbuf=NULL;if(argc!=3){printf("輸入參數個數有誤\n");exit(0);//正常退出 }fd=open(argv[1],O_RDONLY);if(fd==-1){printf("文件打開錯誤\n");perror("open");exit(0);}size=lseek(fd,0,SEEK_END);readbuf=(char*)malloc(sizeof(char)*size+8);lseek(fd,0,SEEK_SET);n_read=read(fd,readbuf,sizeof(char)*size+8);if(n_read==-1){printf("文件讀取錯誤\n");perror("read");exit(0);}fd2=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);if(fd2==-1){printf("目標文件打開失敗\n");perror("open");exit(0);}n_write=write(fd2,readbuf,strlen(readbuf));if(n_write==-1){printf("文件寫入失敗");perror("write");exit(0);}close(fd);close(fd2);return 0; }

配置文件的修改:

#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdlib.h> #include <unistd.h> #include<string.h> int main(int argc,char *argv[])//argc表示參數的個數,argv表示字符串數組是二級指針 {int fd;int size;int n_read;int n_write;char* find=NULL;char* readbuf=NULL;if(argc!=2){printf("輸入參數個數有誤\n");exit(0);//正常退出 }fd=open(argv[1],O_RDWR);if(fd==-1){printf("文件打開錯誤\n");perror("open");exit(0);}size=lseek(fd,0,SEEK_END);lseek(fd,0,SEEK_SET);readbuf=(char*)malloc(sizeof(char)*size);n_read=read(fd,readbuf,size*sizeof(char));if(n_read==-1){printf("文件讀取錯誤\n");close(fd);perror("read");exit(0);}find=strstr(readbuf,"heigh=");if(find==NULL){printf("配置文件中沒有要修改的內容\n");close(fd);exit(0);}find=find+strlen("heigh=");*find='1';*(++find)='8';*(++find)='0';lseek(fd,0,SEEK_SET);n_write=write(fd,readbuf,strlen(readbuf));if(n_write==-1){printf("寫入失敗\n");close(fd);perror("write");exit(0);}close(fd);return 0; }

寫一個整數到文件:

#include<stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int main() {int fd;int a=110;int b=0;fd=open("./test.config",O_RDWR|O_APPEND);write(fd,&a,sizeof(int));lseek(fd,-4,SEEK_END);//因為寫入的是整型,所以光標要移動4個字節read(fd,&b,sizeof(int));printf("寫入的是:%d\n",b);close(fd);return 0; }#include<stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int main() {int fd;short int a=110;int b=0;fd=open("./test.config",O_RDWR|O_APPEND);write(fd,&a,sizeof(short int));lseek(fd,-2,SEEK_END);read(fd,&b,sizeof(int));printf("寫入的是:%d\n",b);close(fd);return 0; }

寫結構體到文件:

#include<stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> struct Test {int a;char b; }; int main() {int fd;struct Test Data1={1,'a'};struct Test Data2;fd=open("./test.config",O_RDWR|O_APPEND);write(fd,&Data1,sizeof(struct Test));lseek(fd,-8,SEEK_END);read(fd,&Data2,sizeof(struct Test));printf("結構體大小是:%d\n",(int)sizeof(struct Test));printf("寫入的是a=%d,b=%c\n",Data2.a,Data2.b);close(fd);return 0; }

寫結構體數組到文件:

#include<stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> struct Test {int a;char b; }; int main() {int fd;struct Test Data1[2]={{1,'a'},{2,'b'}};struct Test Data2[2];fd=open("./test.config",O_RDWR|O_APPEND);write(fd,&Data1,sizeof(struct Test)*2);lseek(fd,-16,SEEK_END);read(fd,&Data2,sizeof(struct Test)*2);printf("寫入的是a=%d,b=%c\n",Data2[0].a,Data2[0].b);printf("寫入的是a=%d,b=%c\n",Data2[1].a,Data2[1].b);close(fd);return 0; }

總結

以上是生活随笔為你收集整理的文件编程练习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久久久免费 | 男生和女生差差的视频 | 日本国产高清 | 欧美日韩人妻一区二区 | 四虎精品在永久在线观看 | 日韩精品在线视频免费观看 | 久久超级碰碰 | 国产在线1 | 中国丰满人妻videoshd | 黑人巨大猛交丰满少妇 | 欧美日本中文字幕 | 亚洲女成人图区 | 高清日韩一区 | 免费看欧美黑人毛片 | 美女xx网站| 武林美妇肉伦娇喘呻吟 | 一级激情片 | 日日夜夜噜噜噜 | 欧美人成在线 | 偷拍xxxx| 亚洲精品国产成人av在线 | 国产破处在线 | 日一区二区| 污网站在线观看免费 | 无码人妻aⅴ一区二区三区玉蒲团 | av直播在线观看 | 午夜久久影院 | 国模人体一区二区 | 一区二区三区视频 | 中文字幕一区二区三区免费视频 | 国产人妻人伦精品1国产丝袜 | 欧美性生活xxx | 人妻久久一区二区三区 | 噼里啪啦免费看 | 日本3级网站 | 久久久噜噜噜久久中文字幕色伊伊 | 欧美一二三级 | 国产三级第一页 | 精品人妻一区二区三区日产 | 日本一区二区在线观看视频 | 性网| 日本午夜啪啪 | 88xx成人永久免费观看 | 韩国伦理片免费看 | 久久久久久片 | 自由 日本语 热 亚洲人 | 国产成人精品一区二区在线观看 | 国产一区在线播放 | 精品人妻无码专区在线 | 天堂在线观看av | 国产尤物视频在线观看 | 黄污视频在线观看 | 日本不卡视频一区二区三区 | 亚洲无毛视频 | 黄色网战入口 | 欧美小视频在线 | 国产伦精品一区二区三区视频免费 | 日本亚洲一区二区 | 魔性诱惑 | 日本伊人久久 | 久久久久9999 | 色一情 | 欧美亚洲国产一区 | 色图自拍 | 国产91熟女高潮一区二区 | 日韩亚洲欧美中文字幕 | 亚洲看片 | 日韩午夜毛片 | 久久久久久久蜜桃 | 超碰极品 | 午夜激情久久久 | 黄色国产一区二区 | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | 少妇无码吹潮 | 铠甲勇士猎铠 | 无码精品人妻一区二区三区漫画 | 影音先锋激情 | 性开放网站 | 亚洲女人天堂成人av在线 | av黄色免费在线观看 | 日韩国产欧美精品 | 成人av网址在线观看 | 日韩欧美xxx | 91精品人妻一区二区 | 黄网址在线观看 | 久久av一区二区三区漫画 | 性生交大片免费看女人按摩 | 一区二区在线观看av | 巨大乳の揉んで乳榨り奶水 | 国产日韩欧美自拍 | 自拍偷拍精品视频 | 国产精品久久久久久久久久久久久久久 | 日本老师巨大bbw丰满 | 粉嫩精品久久99综合一区 | 7777久久亚洲中文字幕 | 中文字幕高清在线观看 | 亚洲高清在线观看视频 | 嫩草影院中文字幕 | 日韩激情网站 |