#includestdio.h

創(chuàng)新互聯(lián)提供高防服務(wù)器租用、云服務(wù)器、香港服務(wù)器、成都西信服務(wù)器托管等
#includestring
void main()
{
char ch[15]="12345";
printf("覆蓋之前字符為:%s\n",ch);
strcpy(ch,"1122334455");
printf("覆蓋之后字符為:%s\n",ch);
}
內(nèi)存里是部分覆蓋了,你看以在查看內(nèi)存看看。
輸出XYZ我認(rèn)為是因?yàn)閜uts(a);這樣之輸出一個(gè)字符串;
覆蓋后數(shù)組a的前三個(gè)字節(jié)是XYZ,第四字節(jié)是結(jié)束標(biāo)志\0;
第五字節(jié)開始是dfg,所以你寫puts((a[4])); 就可以輸出dfg
gets()函數(shù)會(huì)讀入字符串?dāng)?shù)據(jù),并在后面加'\0'。gets(b)執(zhí)行之后b[]里面就是:" is red.\0s blue.\0"
眾所周知,'\0'是字符串結(jié)束標(biāo)志,printf 的時(shí)候到'\0'就結(jié)束字符串輸出了,所以輸出的就是" is red."而不是所有的內(nèi)容。
如果你加上b[8] = '-';
結(jié)果就是:
Fig flower is red.
Fig flower is red.-s blue.
說明內(nèi)容只是覆蓋了前面的一部分,懂?
用讀寫r+ 或 w+ 方法打開。
if((fp=fopen("USER.txt","r+"))==NULL)
任何時(shí)候想回到文件一開始,就用回繞函數(shù):
rewind(fp);
這樣再寫就覆蓋了。
"a" 打開來 是 從文件尾開始添加新內(nèi)容。
fwrite寫入時(shí)覆蓋不覆蓋原來文件是用參數(shù)決定的
fwrite原型:
size_t?fwrite(const?void*?buffer,?size_t?size,?size_t?count,?FILE*?stream);
返回值:返回實(shí)際寫入的數(shù)據(jù)塊數(shù)目
(1)buffer:是一個(gè)指針,對(duì)fwrite來說,是要獲取數(shù)據(jù)的地址;
(2)size:要寫入內(nèi)容的單字節(jié)數(shù);
(3)count:要進(jìn)行寫入size字節(jié)的數(shù)據(jù)項(xiàng)的個(gè)數(shù);
(4)stream:目標(biāo)文件指針;
(5)返回實(shí)際寫入的數(shù)據(jù)項(xiàng)個(gè)數(shù)count。
是否覆蓋決定于stream
FILE?*stream=fopen("文件名","mod");
其中mod如下:
(1)r 以只讀方式打開文件,該文件必須存在。
(2)r+ 以可讀寫方式打開文件,該文件必須存在。
(3)rb+ 讀寫打開一個(gè)二進(jìn)制文件,允許讀寫數(shù)據(jù),文件必須存在。
(4)w 打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
(5)w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
(6)a 以附加的方式打開只寫文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾,即文件原先的內(nèi)容會(huì)被保留。(EOF符保留)
(7)a+ 以附加方式打開可讀寫的文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾后,即文件原先的內(nèi)容會(huì)被保留。 (原來的EOF符不保留)
(8)wb 只寫打開或新建一個(gè)二進(jìn)制文件;只允許寫數(shù)據(jù)。
(9)wb+ 讀寫打開或建立一個(gè)二進(jìn)制文件,允許讀和寫。
(10)ab+ 讀寫打開一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)。
fwrite函數(shù)是覆蓋而不是插入。
只要打開文件時(shí)知名支持寫操作,那么使用fwrite函數(shù)時(shí)均是覆蓋模式,而不會(huì)插入。
即在當(dāng)前位置寫入數(shù)據(jù),后續(xù)數(shù)據(jù)并不會(huì)依次后移,而是直接覆蓋。
比如,如果文件中有數(shù)據(jù)123456789,在3的位置寫入字符abc,那么結(jié)果為
12abc6789。
如果要實(shí)現(xiàn)插入效果,可以將后續(xù)數(shù)據(jù)讀到內(nèi)存,然后寫入要寫的數(shù)據(jù),再寫入原本讀出的數(shù)據(jù)。
名稱欄目:c語言中覆蓋函數(shù) c語言輸入覆蓋
URL鏈接:http://www.chinadenli.net/article6/doosjig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、服務(wù)器托管、動(dòng)態(tài)網(wǎng)站、微信小程序、關(guān)鍵詞優(yōu)化、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)