[爆卦]fopen參數是什麼?優點缺點精華區懶人包

為什麼這篇fopen參數鄉民發文收入到精華區:因為在fopen參數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者kusokiller (士官長)看板C_and_CPP標題Re: [問題] fopen時間Thu...


※ 引述《kusokiller (士官長)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Dev C++
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 問題(Question):
: 課本上的每個有fopen的題目我跑出來都有問題
: 所以現在自己從頭開始試fopen的功能還是不行 囧
: 想請版上的大大幫我看下
: 餵入的資料(Input):
: 預期的正確結果(Expected Output):
: 錯誤結果(Wrong Output):
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: #include<stdlib.h>
: #include<stdio.h>
: int main(){
: char c;
: FILE *ofp;
: ofp=fopen("chapter1","r");
: while((c=getc(ofp))!=EOF){printf("%c",c);}
: system("pause");
: return 0;
: }
: 補充說明(Supplement):

先謝謝前面幾位大大的幫助
現在我會直接fopen("檔案名稱")
和gets(a)等程式執行後輸入檔案名稱這兩種做法了

接下來想請問課本裡面所說的從commend line輸入的方法

檔案名稱:file3
#include<stdlib.h>
#include<stdio.h>

int main(char *argv[]){
char c;
FILE *ifp;
ifp=fopen(argv[1],"r");
while((c=getc(ifp))!=EOF){
printf("%c",c);}
fclose(ifp);

system("pause");
return 0;
}

我的作法是 進去CMD
輸入file3 chapter1 或file3 chapter1.txt
不論是從CMD開始或是從DEV C++直接編譯執行都是程式出現錯誤請關閉
我覺得問題應該是ifp=fopen(argv[1],"r");這行可是我不知道如何修改
麻煩各位大大解惑

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.191.166
james732:int main(int argc, char *argv[]) <- main應該是這樣吧 07/28 14:51
kusokiller:原本是這樣可是我想說我沒有用到argc就先拿掉了 07/28 14:52
james732:那你先改回來試試看能不能正常運作 07/28 14:52
kusokiller:想說一次試一個功能 我把他加回去試看看 07/28 14:53
kusokiller:加回去就成功了 感謝 可是還是不太懂為什麼 @@ 07/28 14:55
LPH66:因為那叫參數列 底層呼叫時一定會放兩個參數上去 07/28 14:55
LPH66:所以你只寫一個就必然會出包 07/28 14:56
LPH66:就像 fopen 你一定是傳兩個參數進去 07/28 14:57
LPH66:那 fopen 的實作就不該偷懶說有參數用不到就不接 07/28 14:57
kusokiller:因為原始題目是一個有ifp也有ofp也有用argc檢查指令數 07/28 15:02
kusokiller:量對不對的程式 我不知道哪裡出錯才想說分開試看看 07/28 15:02
kusokiller:所以這不是個好的學習法嗎? 謝謝j大和L大 07/28 15:03
james732:總之只有int main()與int main(int argc, char *argv[]) 07/28 15:03
loveme00835:囧, 不要試一個功能就開一篇新文阿 07/28 15:03
james732:這兩種寫法,請不要弄出第三種組合 07/28 15:04
loveme00835:這樣整本練完不就... 07/28 15:04
james732:(那個加上環境變數版本的就暫且不討論...XD) 07/28 15:04
tropical72:超哥點了我想問的 XD, 我不確 char** evn 是否所有情 07/28 15:19
tropical72:況都可用 ? 07/28 15:19
james732:其實我也不知道,我沒真的用過它,只是在書上看過 XD 07/28 15:20
firejox:CMD的錯誤應該是 目錄位置不對的原因導致的... 07/28 15:20
firejox:要用cd調整位置 or 直接把執行檔與文件拉進去(自己打絕對 07/28 15:22
firejox:路徑也可) 07/28 15:22
firejox:DEV C++的問題是參數太少 沒有argv[1] 07/28 15:27
firejox:請愛加void 於main 的arg 來標示清楚... 07/28 15:37
kusokiller:請問樓上我知道有main(void) 可是如何有void又有argc呢 07/28 17:16
firejox:有void 就不要有arg 儘量不要寫int main()而是main(void) 07/28 17:21
stonehomelaa:char** evn 有些平台有 不過標準只有james講的兩種 07/28 21:55
stonehomelaa:C++可以不寫void C99一定要加void 07/28 21:57
james732:原來如此,感謝樓上 07/28 21:59

你可能也想看看

搜尋相關網站