女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言-fseek不起作用寫操作定位無效簡析

嵌入式那些事 ? 來源:嵌入式那些事 ? 2023-05-04 09:35 ? 次閱讀

情況說明

最近在寫一個操作文件的函數,使用fseek()函數定位到文件某個位置,然后用fwrite()重新更新該位置的內容,發現該位置處的內容并沒有更新,反而更新的內容竟然出現在了文件末尾,真的是不知道什么情況。

問題復現

下面先簡單復現我所遇到的問題吧,示例代碼如下:

/*
*By:AilsonJack
*Date:2019.01.24
*Blog:www.only2fire.com
*Des:fseek測試
*/

#include

intmain(void)
{
char*fileName="test.txt";
charch='W';
FILE*fp=NULL;
intiRet=0;

fp=fopen(fileName,"a+");
if(!fp)
{
printf("open%sfailed!
",fileName);
return-1;
}

iRet=fseek(fp,0,SEEK_SET);/*定位指針到文件頭*/
if(iRet

將上述代碼編譯,然后在編譯輸出文件所在的文件夾中創建一個test.txt文件,內容為:

123456789abcdef

cda0ac38-e87f-11ed-ab56-dac502259ad0.png

2019-01-24_185403

cdb32fd4-e87f-11ed-ab56-dac502259ad0.png

2019-01-24_185449

接著運行程序,打開test.txt,可以看到內容(字符W)被寫到文件的末尾了:

cdbcb392-e87f-11ed-ab56-dac502259ad0.png

2019-01-24_185803

cdd3f9d0-e87f-11ed-ab56-dac502259ad0.png

2019-01-24_185815

原因分析

這是什么情況,明明使用fseek定位到文件的開頭了,但是實際卻寫入到了文件末尾,好吧,當時我也是挺困惑的,難道是寫fseek()接口函數的哥們還遺留有什么bug。后來上網查證,發現這是我們打開文件的所使用的模式"a+"在作怪。下面看看對該模式的描述,直接在終端輸入:man fopen:

cde31032-e87f-11ed-ab56-dac502259ad0.png

2019-01-24_190507

其中對fopen()函數涉及的a與a+模式的描述如下:

a:Open for appending (writing at end of file). The file is created if it does not exist. The stream is positioned at the end of the file.

a+:Open for reading and appending (writing at end of file). The file is created if it does not exist. The initial file position for reading is at the beginning of the file, but output is always appended to the end of the file.

上述對a與a+模式的描述大致內容是:打開一個文件,如果該文件不存在將創建文件,初始化的文件讀指針位于文件的開頭;對于文件的寫操作,則始終將寫入內容追加到文件的末尾,與文件指針沒有關系。

想必看到這里,大家也明白了。如果想使用fseek()函數定位寫操作指針,那么就修改fopen()涉及的模式,這里修改為"r+",就能實現將內容寫到文件的開始了,對于自己的程序大家還是根據實際情況修改為相應的模式。

ce01b1e0-e87f-11ed-ab56-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140463

原文標題:C語言-fseek不起作用,寫操作定位無效

文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    IAP中斷向量不起作用

    致力于STM32F051。 引導加載程序工作正常,但即使將向量表定位到SRAM后,應用程序文件中的中斷向量也不起作用。 任何解決方案將不勝感激。以上來自于谷歌翻譯以下為原文 Working
    發表于 11-27 15:56

    ShortCut of Comment/Uncomment Selection不起作用

    在PSoC造飾器3.3中按下Ctrl +E、C/CTRL+E、U是不起作用的。誰能告訴我發生了什么事?謝謝您! 以上來自于百度翻譯 以下為原文It does not work to press
    發表于 02-25 08:53

    示例固件不起作用

    示例固件不起作用?以上來自于谷歌翻譯以下為原文 Sample firmware not working?
    發表于 04-08 16:38

    程序不起作用

    已經改為更高版本。我遇到的問題是用戶必須在使用程序之前通過VEE中的.NET程序集參考菜單重新加載較新的DLL。沒有它,該程序不起作用(因為它在C:\ Program Files \ Agilent
    發表于 04-22 13:56

    按鍵掃描程序不起作用

    ,結果也是WK_UP無效,也是不管按下不按下,都不起作用,我用萬用表測試了這個按鍵,這個按鍵完好,就不知道問題出在哪里?是不是板子電路的問題,求救!!!
    發表于 05-20 04:35

    FX3 DVK板讀取操作不起作用

    嗨,我用的是FX3 DVK板。我想使用GPIF II作為主模式。操作良好。讀取操作不起作用。在DMA事件上不調用回調函數。你能解決這個問題嗎?請檢查附件。問候JW郵編1.8兆字節
    發表于 05-20 15:07

    使用LabVIEW VISA例程讀寫操作不起作用

    的讀寫操作不起作用。有什么不同? 以上來自于谷歌翻譯 以下為原文I'm trying to use an E5810 with an Anritsu ME522A bit error
    發表于 08-01 08:37

    能量收集不起作用

    你好, 我從核L476RG,MEMS和NFC02A1開始。我嘗試將MEMS數據寫入nfc標簽及其工作。我的問題是當我嘗試使用能量收集模式時,它不起作用,我不知道為什么。我在nfc多維數據集中使用這個
    發表于 08-01 10:58

    如何解決串口接收中斷不起作用的問題?

    如何解決串口接收中斷不起作用的問題?
    發表于 12-09 07:38

    mcp3421 18不起作用是怎么回事?

    =i2c.read() cifra3=i2c.read() i2c.end() 打印 cifra1 打印 cifra2 打印cifra3 結束 i2c.write(28
    發表于 04-26 08:02

    Freemaster記錄器不起作用怎么解決?

    我創建了一個記錄器,但它不起作用。出現錯誤 0x80000081(無效命令)。我還添加了 FMSTR_Recorder(0)。
    發表于 05-18 07:40

    模型不起作用時的解決辦法

    你的團隊幾個月來一直在收集數據、構建預測模型、創建用戶界面,并與一些早期的用戶一起部署新的機器學習產品。但你現在聽到的并不是大家一起慶祝項目勝利的聲音,而是聽到產品經理對那些早期用戶的抱怨,這些早期用戶對模型精度不滿意并開始認為“模型不起作用”。所以你現在應該做什么?
    的頭像 發表于 05-04 09:54 ?3175次閱讀

    時控開關為什么不起作用,其中的原因是什么

    時控開關不起作用:簡單解釋就是時控開關設置好了定時時間,但是到時間不工作,是怎么回事? 目前時控開關分為兩種:按鍵式時控開關和藍牙時控開關,咱們分開來講解: 按鍵式時控開關不工作原因:1.校時(時間
    發表于 01-07 15:06 ?2.1w次閱讀

    解決西門子觸摸屏變量的數值更改事件有時不起作用

    為什么西門子觸摸屏變量的數值更改事件,有時不起作用。是因為采集模式沒有選擇,在菜單欄里右鍵屬性,勾上采集模式,然后選擇循環連續。
    的頭像 發表于 11-08 17:22 ?7906次閱讀

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納
    的頭像 發表于 10-20 15:04 ?827次閱讀
    KT142<b class='flag-5'>C</b>語音芯片配置文件總是<b class='flag-5'>不起作用</b>?配置文件的問題集中歸納