看板 b98902HW 關於我們 聯絡資訊
※ 引述《barry800414 (小銘)》之銘言: : 本來我是打算讀書會把fopen 的參數都講一下 : 然實際的看有什麼現象發生 : 不過我今天試了好久 : 發現了奇怪的事情... : 自己都爆炸了 XD : #include<stdio.h> : int main() : { : FILE *ptr; : int data; : ptr=fopen("in.txt","r+"); : fscanf(ptr,"%d",&data); : fprintf(ptr,"test"); : fprintf(ptr,"%d\n",data); : fclose(ptr); : return 0; : } : in.txt的內容 : 第一種是只有123456 : 這六個字元 連換行都沒有 : 這個程式可以成功的讓in.txt的內容變成 : 123456test123456 : 第二種是123456這六個字元加一個換行 : 奇怪的事情發生了 : 跑完之後in.txt的內容還是123456 : 連"test" 都沒辦法輸出 : 而我看上課的講義上r+是這麼寫: : Open an existing file for update (reading and writing) : update的定義到底是什麼? : 為什麼上面的程式在第二種狀況會這樣ˊˋ? : 請諸位強者知道的幫忙一下 感激不盡 : 噢我是用devcpp 跑的 附檔名存.c 看起來是\r\n遺毒 在linux上跑起來是很正常的 看起來似乎是fscanf和fprintf算byte上的問題 他們會把\r\n當一個byte 檢驗一下fprintf的回傳值是-1 代表遇到了問題 不是很清楚細節 解決方法就是連後面換行也讀掉 用"%d " --C2009 TA -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.44
barry800414:感謝助教 12/05 01:28
ckclark:這篇亂猜的 忽略它 12/05 02:13