會員 | 【求助】TURBO C讀檔的問題 請問各位高手:我想要把筆記本的數字讀到turbo上.筆記本的資料是:36.25, 27.3, -35.2, 0 ,27, -3.14, 24.87, 9.14, 5.82, 154.8, E讀到E停上並算出共有若干組數字, 以下是我打的程式: #include<stdio.h> #include<stdlib.h> { int n,number=0; char *ch1,ch2; FILE *fp1; FILE *fp2; fp1=fopen("hw1.txt","r"); fp2=fopen("ans1.txt","w"); { for (n=-1;n<number;n++) ch1=fgetc(fp1) while(ch1!='E') number=number+1; } fprint(fp2,"%d\n",number); fclose(fp1); fclose(fp2); } 執行後,營幕上沒有出現任何數字.請問各位高手這程式有什麼問題嗎?為什麼沒有出現任何數字. |
回覆 |
會員 | { for (n=-1;n<number;n++) <--number一開始為0 ch1=fgetc(fp1) <--這行是不是少打了一個分號,for做了一次,就離開,所以ch1的內容是3 while(ch1!='E') ch1='3' != 'E' number=number+1; 會一直做number=number+1,永不會離開這個LOOP,所以當然沒有任何值輸出 } |
回覆 |
會員 | 請問下面的程式有何錯誤:我要做的是將檔案讀進來後到E結束時,將正的數總加起來 #include<stdio.h> #include<stdlib.h> void main(void) { int n,number=0,sum=0; char *ch1,ch2,ch3; FILE *fp1; FILE *fp2; fp1=fopen("hw1.txt","r"); fp2=fopen("ans1.txt',"w"); for (n=-1;n<number;n++) { fscanf(fp1,"%f\n",&ch2); ch1=atof(ch2); if (ch1>0) sum=sum+ch1; { ch3=fgetc(fp1); if (ch3!='E') number=number+1; else number=number+0; } } fprintf(fp2,"number=%d",number); fprintf(fp2,"sum=%f",sum); } |
回覆 |
會員 | ch2為char fscanf(fp1,"%f\n",&ch2);這行會使你的數值亂掉,應設浮點數 再下去,你的程式就亂掉了 你會不會用TURBO C的debug工具,用這看很快的 按Ctrl+F7輸入你要看的參數 按F7或F8單步執行,F7F8有何不同自己去了解 若看不到參數的地方按F6,轉換 若執行到一半,不想執行,再下來按Ctrl+F2,來停止 試試吧 你這程式建議用while loop做判,可在這loop計算加了幾個數,只是你要將數值讀出來可能 要費點功夫了,可以每次每個字元讀出來,放在char 的buffer中,當遇到 "," 時在將buffer用 atof轉換,在加起來 while((ch=fgetc(fp))!='E') { ...... } |
回覆 |
會員 | 下列程式可以執行,但答案不對.可以告訴我如何改嗎?,改哪裡嗎??謝謝.... #include<stdio.h> #include<stdlib.h> void main(void) { float ch1,sum=0; char n,number=0; char ch2,ch3; FILE *fp1; FILE *fp2; fp1=fopen("hw1.txt","r"); fp2=fopen("ans1.txt","w"); for (n=-1;n<number;n++) { fscanf(fp1,"%s\n",&ch2); ch1=atof(&ch2); { if(ch1>0) { sum=sum+ch1; } if ((ch3=fgetc(fp1)!='E') number=number+1; } } fprintf(fp2,"number=%d",number); fprintf(fp2,"sum=%f",sum); fclose(fp1); fclose(fp2); } 執行結果:number=1sum=78.750000 但真正結果:number=10sum=285.180000 |
回覆 |
會員 | #include<stdio.h> #include<stdlib.h> void main(void) { float ch1,sum=0; char n,number=0; char ch2,ch3; FILE *fp1; FILE *fp2; fp1=fopen("hw1.txt","r"); fp2=fopen("ans1.txt","w"); for (n=-1;n<number;n++) { fscanf(fp1,"%s\n",&ch2); printf("ch2:%s\n",ch2); //你在這加個行指令,看看你ch2得到是什麼, //還有ch2是一個字元,但你的數字是字串,所以這樣不行 ch1=atof(&ch2);//&這符號不要亂用 { if(ch1>0) //如果照你的寫法,你的檔案不是有負數嗎,這個判斷可能有問題 { sum=sum+ch1; } if ((ch3=fgetc(fp1)!='E') number=number+1; } } fprintf(fp2,"number=%d",number); fprintf(fp2,"sum=%f",sum); fclose(fp1); fclose(fp2); } 這程式真的很亂,建議重寫,不要在用這架構,用while loop 寫 還有你要先知道,什麼是字串,字元,數值,和檔案指標的跑法 和fgetc(),fgets(),fputc(),fputs(),fprintf(),fscanf()這幾個函數的用法 在加上debug工具,寫程式一定要會用debug工具,否則在厲害的人也寫不出大程式 |
回覆 |
插筆 | 看起來頗像老師所給的作業...是我多疑了吧>< 呃...寫程式比較建議要適時的空格以區別,到時候修改比較方便(看得順眼) BTW,TC的DEBUG功能其實真的已經很完備了~不過前題是你要看得懂它在警告你那裡寫錯... 寫程式不怕有錯,怕的是寫完之後一切無誤,卻出不來結果的LOGIC錯誤..>< |
回覆 |
|
類似的主題 | ||||
主題 | 主題作者 | 討論版 | 回覆 | 最後發表 |
【求助】turbo c的一個問題 | 金田一 | -- 其 他 軟 體 討 論 版 | 2 | 2003-03-16 11:44 AM |
【求助】TURBO C的作業不會寫... | makuyo | -- HELP ME 電 腦 軟 硬 體 急 救 版 | 3 | 2002-05-05 09:34 PM |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。