c語言讀取檔案裡的資料時的問題,C語言讀取檔案資料

2023-02-03 13:35:24 字數 3790 閱讀 3323

1樓:雪域淨天

#include

#define size 4

struct student

stu[size];

main()

fclose(fp);

}注意:程式已經除錯過了,執行好好的,請把資料檔案和程式檔案放在同一個資料夾下.

2樓:

printf("\n%d %f",stu[i].c1,stu[i].c2);

這樣寫是不對的,因為電腦不會幫你分配成員資料的大小。

當你用這句讀取資料後,就要把讀到的資料分配給struct student的成員,我給出參考程式。

fgets(str,80,fp);

memcpy(sell[i].dm,str,4);

memcpy(sell[i].mc,str+4,10);

memcpy(ch,str+14,4);ch[4]=0;

sell[i].dj=atoi(ch);

memcpy(ch,str+18,5);ch[5]=0;

sell[i].sl=atoi(ch);

sell[i].je=(long)sell[i].dj*sell[i].sl;}

3樓:匿名使用者

你的檔案結構跟student這個struct的結構不一樣,所以讀入有錯誤。

4樓:匿名使用者

if((fp=fopen("c:\\data.txt","r"))==null)

這個檔案在**都不知道

c語言讀取檔案資料

5樓:南北

先用getline或fgets讀取資料到一個字串中,這個串定義的長一點,保證夠用就行。

舉例:char str[1024]。

fgets( str , sizeof(str), fp ),//fp開啟的檔案指標。

然後呼叫for迴圈去讀取串的的資料,假設你的分隔符是空格,遍歷str,遇到空格就得到一個資料,然後繼續遍歷,直到str尾。

再去fgets資料,再遍歷,即可得到所有的資料。

c語言是一門通用計算機程式語言,廣泛應用於底層開發。

c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

6樓:匿名使用者

如果允許不按行讀取,用scanf讀整數即可,scanf會自動忽略換行和其它空白符。

for(;;)

如果要按行讀取,需要兩層迴圈, 外層用fgets, 內層用sscanf.

7樓:匿名使用者

使用fopen,fscanf函式即可讀取檔案資料。

1、fopen的函式原型:file * fopen(const char * path,const char * mode);

fopen函式的第一個引數是檔案路徑,第二個引數是開啟方式,有以下幾種方式:

r 以只讀方式開啟檔案,該檔案必須存在。

r+ 以可讀寫方式開啟檔案,該檔案必須存在。

rb+ 讀寫開啟一個二進位制檔案,允許讀資料。

rw+ 讀寫開啟一個文字檔案,允許讀和寫。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的eof符不保留)

wb 只寫開啟或新建一個二進位制檔案;只允許寫資料。

wb+ 讀寫開啟或建立一個二進位制檔案,允許讀和寫。

wt+ 讀寫開啟或著建立一個文字檔案;允許讀寫。

at+ 讀寫開啟一個文字檔案,允許讀或在文字末追加資料。

ab+ 讀寫開啟一個二進位制檔案,允許讀或在檔案末追加資料。

上述的形態字串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。

返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並把錯誤**存在errno中。

2、例程:

#include

#define f_path "d:\\myfile\\file.dat"

char c;

int main()

8樓:思孕

把資料發給我![email protected]我大概能搞定

c語言讀取txt檔案資料時最後有一串亂碼怎麼辦

9樓:

原因很簡單:把while(!feof(fp))中的!

feof(fp)改成1,然後在fscanf那一句後面加一句if(feof(fp)) break;就可以了。因為feof這個函式要在邏輯上緊跟在「讀操作」語句後才能正確生效,而你的寫法在第一次進入while時還沒有讀檔案,feof(fp)判斷什麼?就是這裡造成了最後檔案越界了還當作正常資料在處理,當然就是亂碼了……還有個寫法就是把fscanf也寫在while的()中,用逗號分開再寫!

feof(fp),while的體裡就不再寫fscanf了。這樣邏輯很**。不過你的fscanf語句太長,寫在()中不好看。

有興趣你可以試一下。

c語言的問題,如何讀取檔案中的內容

c語言從文字檔案讀取資料到結構體陣列中的問題

10樓:金色潛鳥

關鍵問題是用 逗號分隔的 字串 ,不能用 逗號格式 這樣分開地讀出來。

要用 "%[^,],%[^,],%f" 格式 才行。

另外 讀引數用 &temp[n].mark 才行,你漏了 &.

--------

你先用下面程式讀2行,

01010101,ababcevvz,96.0020202,efgwe,56.0

試驗成功再讀全部。

#include

#include

struct student

;typedef struct student stu;

stu *temp;

int main()

fclose(fp);}--

讀完的控制用 if (fscanf(...)==eof) break;

用c語言讀入txt檔案中資料為什麼不對

11樓:

首先得保證你的txt裡面除了int型的數沒有別的。

應該說沒有問題的。

再說一下你這個**吧,用完fp的時候一定要釋放。

fclose(fp);

12樓:匿名使用者

能給出一下data.txt裡有啥嗎

用你的**試了下

如果data.txt裡是12345

列印出來是沒問題的

13樓:介澤祕俊賢

fopen開啟檔案,fscanf讀取資料,一次讀三個,不斷新增結果到連結串列中,直到feof為真。

14樓:

你是不是用了全形的輸入法呢?只能用半形的才行

c語言fread函式讀取檔案問題

你寫入文字檔案後,資料是用ascii碼串的形式來表示,已經不是二進位制資料了,因此需要用fscanf函式來讀取,試試如下程式 include include struct hj main fclose fp fread是一個函式。從一個檔案流中讀資料,最多讀取count個元素,每個元素size位元組...

c語言,如何在檔案中讀取某些資料,這些資料在一些特定的字

字元擷取函式 函式名 strtok 功 能 查詢由在第二個串中指定的分界符分隔開的單詞 用 法 char strtok char str1,char str2 程式例 include include int main void 函式第一次呼叫需設定兩個引數,strtok str,str需要分割的串 ...

C怎麼分行讀取檔案的資料,C 怎麼分行讀取Txt檔案的資料

第三行 其它的你自己寫下 如果是相同的資料可以寫個迴圈來讀取也可以reader.close 關閉streamreader物件 catch exception e finally 方法如下 1.新增名稱空間 system.io system.text 2.檔案的讀取 1 使用filestream類進行...