看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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