1樓:匿名使用者
fscanf函式不能夠按照回車換行讀取資料,它遇到空格字元時也會斷開,建議使用fgets函式。
scanf()函式接收輸入資料時,遇以下情況結束一個資料的輸入:(不是結束該scanf函式,scanf函式僅在每一個資料域均有資料,並按回車後結束)。
① 遇空格、「回車」、「跳格」鍵。
② 遇寬度結束。
③ 遇非法輸入。
fgets函式從檔案結構體指標stream中讀取資料,每次讀取一行。讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize-1個字元(第bufsize個字元賦'\0'),如果檔案中的該行,不足bufsize個字元,則讀完該行就結束。如若該行(包括最後一個換行符)的字元數超過bufsize-1,則fgets只返回一個不完整的行,但是,緩衝區總是以null字元結尾,對fgets的下一次呼叫會繼續讀該行。
函式成功將返回buf,失敗或讀到檔案結尾返回null。因此我們不能直接通過fgets的返回值來判斷函式是否是出錯而終止的,應該藉助feof函式或者ferror函式來判斷。
函式原型
char *fgets(char *buf, int bufsize, file *stream);
引數*buf: 字元型指標,指向用來儲存所得資料的地址。
bufsize: 整型資料,指明儲存資料的大小。
*stream: 檔案結構體指標,將要讀取的檔案流。
返回值成功,則返回第一個引數buf;
在讀字元時遇到end-of-file,則eof指示器被設定,如果還沒讀入任何字元就遇到這種情況,則buf保持原來的內容,返回null;
如果發生讀入錯誤,error指示器被設定,返回null,buf的值可能被改變。
c語言 fscanf語句讀取檔案時怎麼換行?
2樓:匿名使用者
fscanf()和scanf()一樣,都是以白字元(、和)作為分隔符的,就是說,當讀到白字元時,就結束當前資料的讀入,並將下一個資料賦給下一個變數。白字元不會當作資料的一部分賦給變數,而會被捨棄,但最後一個白字元會被保留在源資料流中。
例如char s[20];
int a,b,c;
資料檔案中的資料是:
john 89 99 70
jeo 78 99 69
用讀取時,"john"複製到s,98賦給a,99賦給b,70賦給c,最後的會保留在檔案中,當下一個scanf()函式再行讀入時,首先碰到,這個會被讀出並丟棄,即使有多個白字元也同樣被丟棄,直到讀到有效資料。
3樓:
試試這個
fscanf(fp,"%s %d\n",s,m);
關於c語言中fscanf()函式如何讀入檔案中下一行的資料!!
4樓:匿名使用者
錯誤1.你的檔案裡的逗號是中文字元,
2.char * non_h_atom[7];
這你只是定義了一個字串指標,沒有分配空間,如你要使用就要先分配空間給他,除了剛定義時可以直接賦值。
如char * non_h_atom[7]=改成#include
#include
int main()
printf("%d, %d, %d\n",comp_name,n_h_num,ring_num);
bond_num=ring_num+n_h_num-1;
for(i = 0;i system("pause");} c語言中fscanf()按一定的格式讀取文字檔案! 5樓:匿名使用者 #include #include void main() //int num=fscanf(fp,"%s%s%s",idmesg,name,stuid); //這一行是什麼意思呢,fscanf返回和格式匹配的項數,而不是行數,而且這個操作移動了檔案指標,以後再讀還要還原 //用判斷是否到檔案結尾的標準方法讀取就行了while (!feof(fp)) fclose(fp);} 6樓:匿名使用者 1 在 if((fp=fopen("db.txt","r"))==null) **之後, 沒有理會 fp 是否為空, 仍然呼叫了fscanf; 2 int num=fscanf(fp,"%s%s%s",idmesg,name,stuid); for(int i=0;i #include int main() fscanf(fp, "%d", &num); printf("number is %d\n", num); for(int i = 0; i < num; i++)fclose(fp); return 0;} 7樓:斯坦恩貝格(北京)電子**** 這篇文章可以幫助解答,內容非常詳細 c語言如何實現從文字檔案裡讀取數字? 8樓:匿名使用者 可以通過fscanf,從檔案中依次讀取資料。當fscanf返回eof時,表示讀到檔案結尾,這時停止讀取即可。以檔案中儲存的為空格分隔的整型字元為例,可以寫作: 從開啟的檔案指標fp指向的檔案讀資料,每次讀一個整型,直至檔案結尾。 c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。 c語言是一個有結構化程式設計、具有變數作用域(variable scope)以及遞迴功能的過程式語言。c語言傳遞引數均是以值傳遞(pass by value),另外也可以傳遞指標(a pointer passed by value)。不同的變數型別可以用結構體(struct)組合在一起。 9樓:別瑤毓嫣 void main() abc.txt 內容:123456789 讀到陣列: inty[20]; inti; fin= fopen("abc.txt","r"); for(i=0;i<9;i++) fscanf(fin,"%1d",&y[i]); c語言如何用fscanf按行讀取一段固定格式 10樓:風若遠去何人留 在fscanf的第二個引數,格式字串中,指定對應的格式即可。 fscanf與scanf類似,可以格式化輸入一組資料,不過不是從終端,而是從對應檔案中。 其宣告為: int fscanf(file *fp, const char *fmt, ...); 功能為從開啟的檔案fp中,根據fmt格式字元,讀取資料到後續引數中,並返回實際讀取的個數。 比如,檔案中存著以逗號分隔的三個整型數值,那麼將其讀取的操作即 其中,fp為開啟的檔案指標,abc分別是三個整型變數。 11樓: 你可以用fgets()按行讀取內容到 字串變數裡,然後處理。 假如已讀入到 str[80] 裡: char str[80]="or2_x2 c401 ( .a1(n66), .a2(n85), .zn(n142) )"; 多行這樣的文字格式, 如果位置固定,可以直接讀出: char r[4][5]; sscanf(str,"%s",r[0]); r[0][3]='\0';printf("%s\n",r[0]); sscanf(str+18,"%s",r[1]); r[1][2]='\0';printf("%s\n",r[1]); sscanf(str+28,"%s",r[2]); r[2][3]='\0';printf("%s\n",r[2]); sscanf(str+38,"%s",r[3]); r[3][4]='\0';printf("%s\n",r[3]); ------------------------ 如果位置不固定,我們可以用查詢 點號的位置加4: int i,j,l[3]; j=0; for (i=0;i }sscanf(str,"%s",r[0]); r[0][3]='\0';printf("%s\n",r[0]); sscanf(str+l[0],"%s",r[1]); r[1][2]='\0';printf("%s\n",r[1]); sscanf(str+l[1],"%s",r[2]); r[2][3]='\0';printf("%s\n",r[2]); sscanf(str+l[2],"%s",r[3]); r[3][4]='\0';printf("%s\n",r[3]); framebuffer 幀緩衝 幀的最低數量為24 人肉眼可見 低於24則感覺到畫面不流暢 顯示卡與幀的關係 由cpu調節其資料傳輸速率來輸出其三基色的配比。三基色 rgb 紅綠藍 在沒有桌面和圖形檔案的系統介面,可以通過c語言的程式設計來實現在黑色背景上畫圖!用下面的 在需要的地方 有註釋 適當修... 1學譚浩強的入門 或者學那本 外國人的那本入門 c程式設計語言 the c programming language 2本可以交叉著看 2遇到看不懂的 多用google 比如malloc函式 那本書就語焉不詳 可以多找點文章看看 是在看的想睡覺的章節 比如譚浩強的那個第二章 演算法 那節 可以先跳過... 1 當1個c語言程式由 多個 源程式檔案 組成時,由於每個 源程式檔案 都有 include include h 最終它們可能形成交叉 包含 和 重複包含 現象 而造成錯誤。2 為了避免這種情況發生,可以 採用 定義巨集 的方法 把各個標頭檔案 包起來。編譯器 在正式編譯的開始,現處理 巨集 也就是...c語言如何畫圖,C語言如何畫圖
如何學習C語言到精通,如何學習C語言
c語言如何防止型別重複定義,C語言如何防止型別重複定義