【求助】TURBO C讀檔的問題

顯示結果從第 1 筆 到 7 筆,共計 7 筆
  1. #1
    會員
    註冊日期
    2002-06-28
    討論區文章
    75

    【求助】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);
    }
    執行後,營幕上沒有出現任何數字.請問各位高手這程式有什麼問題嗎?為什麼沒有出現任何數字.



  2. #2
    會員 gwochern 的大頭照
    註冊日期
    2002-02-15
    討論區文章
    785
    {
    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,所以當然沒有任何值輸出
    }

  3. #3
    會員
    註冊日期
    2002-06-28
    討論區文章
    75
    請問下面的程式有何錯誤:我要做的是將檔案讀進來後到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);
    }

  4. #4
    會員 gwochern 的大頭照
    註冊日期
    2002-02-15
    討論區文章
    785
    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')
    {
    ......
    }

  5. #5
    會員
    註冊日期
    2002-06-28
    討論區文章
    75
    下列程式可以執行,但答案不對.可以告訴我如何改嗎?,改哪裡嗎??謝謝....
    #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



  6. #6
    會員 gwochern 的大頭照
    註冊日期
    2002-02-15
    討論區文章
    785
    #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工具,否則在厲害的人也寫不出大程式

  7. #7
    插筆 Wild-Half 的大頭照
    註冊日期
    2002-02-10
    所在地區
    ADSL 2M/256
    討論區文章
    438
    看起來頗像老師所給的作業...是我多疑了吧><
    呃...寫程式比較建議要適時的空格以區別,到時候修改比較方便(看得順眼)
    BTW,TC的DEBUG功能其實真的已經很完備了~不過前題是你要看得懂它在警告你那裡寫錯...

    寫程式不怕有錯,怕的是寫完之後一切無誤,卻出不來結果的LOGIC錯誤..><

類似的主題

  1. Matlab讀檔問題
    作者:findlin 所在討論版:-- 其 他 軟 體 討 論 版
    回覆: 1
    最後發表: 2009-04-20, 07:51 AM
  2. 【問題】有關燒錄後變唯讀檔的問題?
    作者:gamer 所在討論版:-- 光 碟 燒 錄 討 論 版
    回覆: 6
    最後發表: 2008-12-30, 03:18 PM
  3. 【求助】vc讀檔的問題
    作者:金田一 所在討論版:-- 其 他 軟 體 討 論 版
    回覆: 3
    最後發表: 2003-05-14, 10:27 PM
  4. 關於寫Turbo C的問題
    作者:流浪者~MIT 所在討論版:-- 其 他 軟 體 討 論 版
    回覆: 0
    最後發表: 2002-10-11, 07:44 PM
  5. 【問題】BlindWrite 40x讀取來源檔的錯誤警示
    作者:大胖 所在討論版:-- 光 碟 燒 錄 討 論 版
    回覆: 0
    最後發表: 2002-06-08, 01:52 AM

 

此網頁沒有從搜尋引擎而來的訪客

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •