全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:770
推到 Plurk!
推到 Facebook!

C語言的file讀取問題

尚未結案
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-03 10:56:56 IP:134.208.xxx.xxx 未訂閱
我要讀取多份學生資料,但是執行出來結果會發生錯誤,我覺得原因是因為不知道檔案中的各種資料所在位置在哪的關係,請幫我看看,謝謝
#include
#include    int main(int argc ,char *argv[]){
 
    FILE *stream;
    char name;
    char department;
    int year;
    char address;
    float gpa;        stream=fopen("record.txt","r");        if (stream==NULL)
       {
            printf("open failed\n");
       }
    else
       {
            printf("open succeed");
                while((fscanf(stream,"%s %s %d %s %f",name,department,year,address,gpa))!=EOF)
                     {
                        printf("%s %s %d %s %f\n",name,department,year,address,gpa);
                     }   
            fclose(stream);
       }    system("pause");
return 0;
}
發表人 - dragonliu01 於 2005/01/03 11:04:06
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-03 11:14:02 IP:61.66.xxx.xxx 未訂閱
FILE *stream;     char name; => char* name char department; => char* department int year; char address; => char* address float gpa; 先這樣改改看吧 你在以上的型態宣告為字元 但在fscanf是用 %s(這是要讀取字串) 所以你的資料型態宣告錯誤
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-03 15:07:43 IP:134.208.xxx.xxx 未訂閱
回blk大大: 修改過後還是一樣...cmd跑出來會有open succeed 不過馬上就發生問題 必須關閉....
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-03 15:32:21 IP:61.66.xxx.xxx 未訂閱
參考一下  
 
int main(int argc ,char *argv[]){        FILE *stream;
    char name[10];
    char department[10];
    int year;
    char address[10];
    float gpa;        stream=fopen("record.txt","r");        if (stream==NULL)
       {
            printf("open failed\n");
       }
    else
       {
            printf("open succeed\n");                    while((fscanf(stream,"%s %s %d %s %f",&name,&department,&year,&address,&gpa))!= EOF)
                     {
                        printf("%s %s %d %s %f\n",name,department,year,address,gpa);
                     }
            fclose(stream);
       }    system("pause");
return 0;
}
我設定的record.txt aaa AAA 1 KKK 1.0 bbb BBB 2 LLL 2.0 ccc CCC 3 NNN 3.0
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-03 23:08:56 IP:134.208.xxx.xxx 未訂閱
那請問為什麼以pointer的形式不能呢? 又爲什麼array形式就可以呢??
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-04 09:35:54 IP:61.66.xxx.xxx 未訂閱
我並不清楚為什麼pointer不行 但是pointer和array並不是完全相同的 pointer只是一個指標,並不能預期你打算在後面接多長的資料 如果這指標的記憶體位置和其他資料太近,可能會產生覆蓋的情形 array有指定長度,就不會有覆蓋的問題,但你的資料長度不能超過他的容量,不然也是會有問題 我建議,少用指標,否則程式一大,哪邊的資料被蓋到你都不知道
系統時間:2024-05-18 20:15:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!