[VC++問題]程式碼衝突到了 |
尚未結案
|
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
這是我自己寫的刪空白和刪註解程式 我把它統合在一起 "程式個別是沒有問題的" 所以不用去理會 問題是在於 當我輸入1或是2(3目前還沒有功能) 程式因該會問我要做哪一個檔(使用者自行輸入) 然後再去做使用者要的功能 complier沒問題實際執行 就不行了 不知問題出在哪裡 後面的2支程式我個別做了記號 單獨是沒有問題的 我想問題應該是出在前面的邏輯
#include |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
Miki-lion 妳好: 我將妳的程式稍做調整後,以 BCB 編譯過後可以正常運作 (我沒有 VC++),以紅色標示者為調整過的地方,妳試試看使用 VC++ 編譯後是否也可正常運作?
#include發表人 - RedSnow 於 2005/05/28 16:42:15 |
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
Miki-lion 妳好: 呵呵~不用客氣啦,我也是在邊學邊幫忙的,我看到一些問題是我會的,那我就會直接回覆 (不過有時也會抓錯重點而出槌....),否則我就看問題是不是我有興趣的?有興趣的話,我也會去做些測試,看能不能找出問題來?然後試著提供一點意見,我回覆妳這篇問題就屬於後者,因為測試妳的程式時,發生了幾個錯誤,我依據錯誤訊息,查看 Help 相關說明後,試著修改程式讓它能跑,在這個過程中,我也學到 (雖然我用不著) fflush(stdin) 可以解決使用多個 scanf() 時所產生的錯誤,以及原因的所在,以下就是我現在的瞭解,妳也參考一下吧:
scanf 在讀取資料時要等到 eof - end of field (讀取檔案時的 end-of-file 或是 end-of-string) 或是發生錯誤時才會完成動作。 當妳按下 Enter 鍵時會送出一個換行符號,告訴系統要完成 scanf() 的動作,但是妳若未主動清除掉那個換行符號的話,它是會停留在 stdin (標準輸入裝置) 的緩衝區裡面的,因此在進行下一個 scanf() 時,就會產生錯誤了,fflush(stdin) 就是將 stdin 的緩衝區清除乾淨,以避免進行下一個 scanf() 動作時會產生錯誤。
|
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
在刪註解的部份有分多行的/**/ 單行的// 原本的程式是分成這2部分的 可以選擇要做哪一部份 分開並沒有問題 想不到放在一起做就會有問題 一時也想不出來解決方法 實在想不通為何前面無法刪除 後面卻可以 先PO出來說一下 我陷在還在弄呢>< 例如處理下面的文字
dhghdrhdrh /*654654656*/ -----無法刪除 //4654646 -----無法刪除 /* //11111111111111111111111122222 -----可以刪除 2222222222222333333333333444444 445555666666 /*45646546----可以 88可以------可以 87*/--------可以我也要收哈囉kitty^^ |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
Miki-lion 妳好: 我覺得程式處理的本身沒有什麼大問題,但是在流程上好像有必要做些許的調整,因此我更改了部分程式敘述的順序,並加上一些設定,剛才以我的環境配合妳貼上來的那些測試資料做了測試後,結果應該是可以達到要求的,修改後的程式碼如下:
#include妳再測試一下,看看在妳的環境中是否也 OK? 發表人 - RedSnow 於 2005/05/29 13:41:01 |
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
程式我執行了 多型註解的部份是沒有功能的 程式我還在看 今天我有重寫一個起來 不過依然還是有問題 之前說沒有問題應該是沒去注意到BUG 處理下面這些字元時,多型註解就不行了 我再來寫看看 好累人喔 //111111111111111111111111111111111111111
/*222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
555555555555555555555555555555555555555
666666666666666666666666666666666666666*/
777777777777777777777777777777777777777
//0000000000000000000000000000000000000//
/*8888888888888888888888888888888888888*/ 我也要收哈囉kitty^^
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
Miki-lion 妳好: 抱歉又擺烏龍了,前一篇為了強調某些位置的變動,因此在貼到版面上之前,在程式碼裡面插入顏色標籤來作標示,因為一時的偷懶,部分資料是用複製的,不小心多複製了一段,以致整個程式的輸出變了個樣子,這次我不用顏色作標示了,直接將剛剛執行過的程式貼上來,妳再試試看:
#include發表人 - RedSnow 於 2005/05/30 00:02:42 |
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
我沒有改到那個部分耶,整個程式有用到雙引號的地方僅有下列這幾處:
printf("請選擇功能\n"); printf("1.刪除空白 2.刪除註解 3.讀取設定檔:"); scanf("%d",&num); printf("Please input file name:"); fp=fopen(filename, "r"); // 將宣告與使用分開 fscanf(fp,"%c",&word[count]); printf("%c",word[i]); printf("\n"); printf("%c",word[i]); printf("\n");妳講的那些敘述用的都是單引號啊:if(word[i]==' ' && word[i 1]==' '){ word[i]='!'; if(word[i]!='!') if(word[i]=='/' && word[i 1]=='/'){ word[j]='|'; if(word[i]=='/' && word[i 1]=='*'){ if(word[j]=='*' && word[j 1]=='/'){ word[j]='!'; if(word[i]!='|'&& word[i]!='!'){那ㄟ安咧....,難道有幽魂躲在本版? |
Miki-lion
中階會員 發表:90 回覆:180 積分:54 註冊:2005-04-24 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |