【求助】TURBO C讀檔的問題 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- 其 他 軟 體 討 論 版


PCZONE 討論區



通知

-- 其 他 軟 體 討 論 版 包括磁碟或檔案管理工具、掃毒軟體、解壓縮軟體、遠端遙控軟體、備份軟體、傳真軟體、手寫或語音等各種軟體使用經驗討論

會員
【求助】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 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。