[爆卦]Fopen 用法是什麼?優點缺點精華區懶人包

為什麼這篇Fopen 用法鄉民發文收入到精華區:因為在Fopen 用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者jacky1989 (幻想的夢境)看板C_and_CPP標題[問題] fopen的a+用法時間S...


開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++

問題(Question):
嘗試可任意讀出寫入一個文字檔

錯誤結果(Wrong Output):
不會執行

程式碼(Code):(請善用置底文網頁, 記得排版)
#include<stdlib.h>
#include<stdio.h>
int main(){
char s[255];
FILE *fo;

fo=fopen("addr.txt","a+");
if(fo==NULL)
exit(0);
fscanf(fo,"%s",&s); //此行有讀出來
fprintf(fo,"%s\n",s); //這一行不會執行,因為文字檔沒有被寫入
system("pause");
fclose(fo);

return 0;
}

我如果把fscanf那一行拿掉fprintf就可以正確執行了
而這程式是正常的
我該怎麼解決那問題??

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.90.247
james732:把 fclose(fo) 移到 system("pause"); 之前試試 10/22 01:53
james732:另外fscanf(fo,"%s",&s); 改成 fscanf(fo,"%s",s);較好 10/22 01:53
tropical72:可以對同一個檔又讀又寫的嗎? 10/22 02:05
purincess:樓上 可以啊 + 就是這個用途 10/22 02:09
james732:我剛剛跑原po的程式是成功的...XD 10/22 02:10
cloudlim:原PO的scan會不會把s指向的位置蓋掉?@@" 10/22 02:18
purincess:不會, 在原文下&s跟&s[0]是...好吧我得小心講話..差不多 10/22 02:21
purincess:的 10/22 02:21
tropical72:是我人品問題嗎? http://codepad.org/9xFAr4bx XD 10/22 02:22
purincess:不知道欸 你的code我只有印出一次fscanf = 1和fputs=1 10/22 02:31
purincess:就結束了, which is expected.. 10/22 02:31
purincess:我的認知是a+的open會把 讀寫頭指到開始的地方 10/22 02:32
purincess:然後讀一次1出來之後fputs就會把讀寫頭移到檔案結束的 10/22 02:32
purincess:位址(a+的行為) 寫進去之後下次fscanf就讀到eof就結束了 10/22 02:32
tropical72:我竟然要這麼做才可以 http://codepad.org/W7oUgEti 10/22 02:40
tropical72:詳細還要研究一下。 10/22 02:41
purincess:附一下我的環境是ubuntu gcc-4.4.3 @@ 10/22 02:46
tropical72:a+ r+ w+ 查了一下,眾說紛云,且目前版上看到三種結果, 10/22 02:53
tropical72:懷疑 depends on os / compiler , 有空再 try try .. 10/22 02:53
james732:又要挖library來看了嗎...XD 不過今晚想休息 10/22 02:54
loveme00835:http://ppt.cc/@K3A 10/22 20:06
hilorrk:我也是一直在看spec,但是照理來說a保證write一定在EOF 10/22 20:14
hilorrk:寫出失敗代表+的這種特性會蓋過第5點? 10/22 20:16
loveme00835:有讀有寫, 共享同一個指針不意外 10/22 20:17
hilorrk:總覺得6不應該是蓋過5 output應該是要在EOF沒錯...input則 10/22 20:23
hilorrk:不一定...但如果是這樣 為何input會成功而output失敗 10/22 20:23
loveme00835:就踩線了阿, 仔細看我的連結 10/22 20:24
loveme00835:如果讀完還要幫你移到後面, 光想就知道會慢到炸 10/22 20:26
hilorrk:啊 我懂了 我一直把spec的input output想成位置 以為他只 10/22 20:26
hilorrk:想說input不一定在output後面 output不一定在input後面XD| 10/22 20:27
hilorrk:原來是說不能接著用...英文太爛 拍謝= =|| 10/22 20:28

你可能也想看看

搜尋相關網站