C語言裡fscanf是如何處理c與s的

2022-03-13 05:45:13 字數 4492 閱讀 8718

1樓:

fscanf和scanf一樣,只是前者一般從檔案中讀資料,後者從輸入緩衝區讀資料。在scanf中,%c只讀取乙個字元,%s是讀取乙個字串——這時會跳過前面的' '、'\t'、'\n'等廣義空格直接接收字元,乙個接乙個地把接收到的字元依次賦給對應的陣列元素,當再次遇到' '、'\t'、'\n'等廣義空格時認為字元接收完畢,就在剛被賦值的元素後增補乙個'\0'以表示本次接收的字串結束。fscanf的接收過程與此完全一樣,只是是從它的第乙個檔案指標實參指向的檔案中讀取的;若把fscanf的第乙個實參換成stdin(標準輸入),它就和scanf一樣從鍵盤讀入資料了。

2樓:

請問stu[n].group成員是什麼型別的?如果是char型別用%c,如果是char *型別,則應該用%s

3樓:匿名使用者

while(fscanf(fp, "空格

name, &stu[n].score) != eof)

吃換行而已

在c語言中,while(fscanf(fp,"%s",str[n])>0) n++;是什麼意思

4樓:倫悅宜

從指定檔案中成功讀取乙個串的話,就計數。

5樓:

str是乙個2維陣列,每次從fp指向的檔案裡面讀取一串放到str的一行裡面,fscanf和scanf差不多,都是讀取str的值,fscanf從fp指向檔案裡面讀取,scanf從標準輸入裡面讀取

6樓:夜禮服假面

迴圈將字串陣列str的內容寫入檔案指標fp中

c語言fscanf函式問題

7樓:金色潛鳥

fprintf(fp,"%s,%c,%d,%f",str,a, c, b); 這個輸出格式表明 你的檔案1.txt 裡的資料 是用 逗號 分 隔。

if((fp = fopen("1.txt","r"))==null) 你要開啟 讀 這個 用 逗號為 分隔符 的檔案。

漏寫 str, 給你補上,但 這仍不能解決 %s, 的逗號分隔問題。

必須 用下面格式讀取逗號分隔的資料:

***********************************===

假如檔案裡的資料 用 空白 分隔,不用 逗號,日子就好過得多:

fprintf(fp,"%s %c %d %f",str,a, c, b);

8樓:匿名使用者

明顯少個引數啊

c語言檔案fscanf和fprintf

9樓:

你寫進檔案之後,格式是

123(換行)

讀的時候123被當做乙個數讀進來了,因為之間沒有分隔符想讀出1的話,寫的時候應該這麼寫

fprintf(fp,"%d ",a[i]);

或fprintf(fp,"%d\t",a[i]);

或fprintf(fp,"%d\n",a[i]);

10樓:匿名使用者

for(i=0;i<3;i++)

fprintf(fp,"%d",a[i]);你這樣寫進去的 所以檔案裡存入123緊挨著

fscanf(fp,"%d",&n); 跟scanf差不多 都是在空格或回車後結束 也就是說把123都讀進去了

for(i=0;i<3;i++)

fprintf(fp,"%d ",a[i]);改成 在%d後面加空格就好了

11樓:匿名使用者

#include

main()

,i,n;

//新增乙個字元

char ch;

fp=fopen("d1.dat","w");

for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);

fprintf(fp,"\n");

fclose(fp);

fp=fopen("d1.dat","r");

//讀入以字元的格式fscanf(fp,"%d",&n);

fscanf(fp,"%c",&ch);

printf("%c",ch);//輸出字元『1』;

fclose(fp);

// printf("%d\n",n);

}//由於你檔案你的字元排列是 123'\n' 所以用%d讀入將讀入123

//就象這句 scanf("%d",&n);一直讀到空格或者回車符為止。那怕你輸入a字

//符,printf("%d",n);將輸出(int)a=97;

12樓:情感世界

for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);

1.迴圈輸出三個數正確。。。a[0]a[1]a[2]...1232.你說輸出1??

3.原始檔下d1.dat裡面也是123.

13樓:

123之間沒有空格

fprintf(fp,"%d",a[i]); =>fprintf(fp,"%d ",a[i]); 就是1了

14樓:聖鸞

fprintf函式:

標頭檔案:#include

定義函式:int fprintf(file * stream, const char * format, ...);

函式說明:fprintf()會根據引數format 字串來轉換並格式化資料, 然後將結果輸出到引數stream 指定的檔案中, 直到出現字串結束('\0')為止。

返回值:關於引數format 字串的格式請參考printf(). 成功則返回實際輸出的字元數, 失敗則返回-1, 錯誤原因存於errno 中.

範例#include

main()

執行:-100 3.141590 96

150 150

fscanf函式:

功 能: 從乙個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。

用 法:int fscanf(file *stream, char *format,[argument...]);

int fscanf(檔案指標,格式字串,輸入列表);

for example:

file*fp;

chara[10];

intb;

doublec;

fscanf(fp,"%s%d%lf",a,&b,&c)

返回值:整型,數值等於[argument...]的個數

其中的format就是相當於正規表示式中的格式,即用什麼樣的格式來分隔檔案中的資訊。

c語言中fread,fwrite和fscanf,fprintf的區別,什麼是格式化資料

15樓:勤奮的小

fread:是讀取資料

fwrite:是寫入資料

1.函式功能

用來讀寫乙個資料塊。

2.一般呼叫形式

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

3.說明

(1)buffer:是乙個指標,對fread來說,它是讀入資料的存放位址。對fwrite來說,是要輸出資料的位址。

(2)size:要讀寫的位元組數;

(3)count:要進行讀寫多少個size位元組的資料項;

(4)fp:檔案型指標。

注意:1 完成次寫操(fwrite())作後必須關閉流(fclose());

2 完成一次讀操作(fread())後,如果沒有關閉流(fclose()),則指標(file * fp)自動向後移動前一次讀寫的長度,不關閉流繼續下一次讀操作則接著上次的輸出繼續輸出;

3 fprintf() : 按格式輸入到流,其原型是int fprintf(file *stream, const char *format[, argument, ...]);其用法和printf()相同,不過不是寫到控制台,而是寫到流罷了。

注意的是返回值為此次操作寫入到檔案的位元組數。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10位元組;str2:

10位元組;a:2位元組;b:8位元組,c為33,因為寫入時不同的資料間自動加入乙個空格。

4.fscanf 和 scanf 相似 :當能正常讀入資料時, fscanf 返回讀入資料的個數,否則返回 eof 。

C語言fseek函式如何處理中文

為什麼非得從後面往前讀呢?不過話說回來,就算如此,你要能夠顯示中文的話弄個陣列,用fgets讀取就是了啊,不知道你有什麼問題 這個程式是想幹什麼的?c語言fseek問題 int fseek file stream,long offset,int origin 第乙個引數stream為檔案指標 第二個...

win7 c盤空間無故變小,怎麼回事?如何處理

滑鼠右鍵點我的電腦 屬性 系統保護 配置 選擇百分之零 搞定分析 每次開機電腦都會備份系統檔案到系統盤。 360系統救援裡有這項修復,搜尋一下就能找到 win7 c盤空間越來越小 使用空間不夠?教你如何清理c盤 倒一杯愛情的香甜 為什麼win7c盤空間越來越小 c盤空間越來越小怎麼清理?簡單1招,教...

C語言中如何取整,C語言中取整是怎麼取?

茅玉枝稅子 參與運算量均為整型時,結果也為整型,捨去小數。如果運算量中有一個是實型,則結果為雙精度實型。printf d,d n 10 3,10 3 printf f,f n 10.0 3,10.0 3 c語言有以下幾種取整方法 1 直接賦值給整數變數。如 inti 2.5 或i int 2.5 這...