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 這...