『壹』 c語言中fgets 、fputs、fread、fscanf、fseek的區別和作用
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語言文件操作fputs函數
如果fputs("asdf\nKJHGF",fp);的話,應該可以寫入2行的。
另外,在循環中使用,也可以寫入多行的。
『叄』 C語言對文件操作,用fputs函數不能把字元串寫入文件
讀寫一個字元數據
經過前面的學習,我們學習了fread()、fwrite()函數的操作,這兩個函數都是對一段「內存塊」進行讀寫操作。那麼,C語言還提供了fgetc()、fputc()函數,對文件中的一個字元進行讀寫操作。這些函數的定義如下:
int fgetc(FILE *stream);
函數說明:從stream文件指針所指向的文件讀取1個字元,通過函數的返回值返回。例如:
char c = fgetc(fp);
就是從fp指向的文件,讀取1個字元的數據,通過函數返回值,設置給字元變數c。
int fputc(int c, FILE *stream);
函數說明:把參數c表示的字元,寫入stream文件指針所指向的文件。例如:
char c = 'M';
fputc(c, fp);
就是把參數c表示的字元變數,寫入文件指針fp指向的文件。如下是一個程序測試例子:
可以看到,新建一個test.txt文件,調用fputc()函數,把一個字元寫入到文件中。然後,再重新打開文件,讀取文件的數據,調用fgetc()函數讀取一個字元,得到的數據是剛剛寫入的字元。所以,通過這個例子,我們學習了fgetc()、fputc()函數的操作,對文件進行一個字元的讀寫操作。
3.5 讀寫一行字元數據
C語言提供了fgets()、fputs()函數對文件進行讀寫「一行」的數據,字元串以'\n'字元換行,注意,所謂的「一行」數據,它的最後一個有效字元是』\n』,表示換行符號。字元串的結束符,還是以』\0』為結尾,表示字元串結束符。其中fgets()函數的定義如下:
char *fgets(char *buf, int size, FILE *stream);
函數說明:從stream函數指針所指向的文件中,讀取size-1個位元組到buf緩存,不是讀取size個位元組,因為,buf[ ]緩存的第size個位元組存放字元串結束符,形成一個有效的字元串。
當讀取到換行符時,或者到達文件末尾時,結束文件的讀取操作。
返回值:讀取數據成功,返回存儲數據的緩存地址,就是參數buf的地址。如果讀取數據失敗,返回NULL。例如,讀取文件完,沒有數據可以再讀取,則返回NULL。
int fputs(const char *buf, FILE *stream);
函數說明:把參數buf指針指向的字元串,寫入到stream指向的文件。參數buf是一個字元串指針,必須指向一個合法的字元串。合法的字元串是以字元串結束符'\0'結束,表示一個字元串的結尾。
返回值:寫入數據成功,返回成功寫入的字元個數。失敗返回EOF標記。
如下是一個程序測試例子:
程序運行結果如下:
可以看到,程序調用fputs()函數,往打開的test.txt文件寫入數據。直接寫入一個字元串。然後,關閉文件,再重新打開文件。調用fgets()函數讀取數據,讀取數據的時候,遇到回車換行的字元'\n',表示一行數據,那麼,就返回讀取到的一行數據。
在實際的項目開發過程中,fgets()函數非常有用。例如,我們定義一個config.txt文件,裡面存放一些系統的配置信息,文件的格式如下:
cat /etc/config.txt
sys_pwd=123456
ApCliAuthMode=WPA2PSK
ApCliEncrypType=AES
ApCliChannel=1
ApCliDefaultKeyID=1
那麼,文件的配置信息是一行一行數據,所以,可以用fgets()函數,快速讀取出每一行系統配置信息。
『肆』 C語言fputs()函數問題
scanf("%s", &ch); 這個函數問題
改成
gets(ch); 再試試
『伍』 C語言里fgets函數怎麼用
fgets(由文件中讀取一字元串)
表頭文件
include<stdio.h>
定義函數
char * fgets(char * s,int size,FILE * stream);
函數說明
fgets()用來從參數stream所指的文件內讀入字元並存到參數s所指的內存空間,直到出現換行字元、讀到文件尾或是已讀了size-1個字元為止,最後會加上NULL作為字元串結束。
返回值
gets()若成功則返回s指針,返回NULL則表示有錯誤發生。
範例
#include<stdio.h>
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
執行
this is a test /*輸入*/
this is a test /*輸出*/
『陸』 C語言中fputs遇到空字元停止輸出所以字元
c語言中輸出字元串的函數有printf("%s") puts() fputs()等,字元串中可以是任意的字元,包括空格在內,無特殊處理,如: char str[]="hello world" ;printf("%s\n", str );puts(str);fputs(str,stdin); 但在輸入帶有空格的字元串時,只能用gets()或fgets(),而不能用scanf("%s") ,因為scanf("%s")輸入字元串時,遇到空格就結束了輸入。而gets()函數是以回車為結束符的輸入函數,可以輸入帶空格的字元串。
『柒』 c語言fputs函數問題
fputs是一種函數,具有的功能是向指定的文件寫入一個字元串(不自動寫入字元串結束標記符'\0')。成功寫入一個字元串後,文件的位置指針會自動後移,函數返回為一個非負整數;否則返回EOF(符號常量,其值為-1)。
『捌』 c語言使用fputs函數寫入無效
文件指針的問題,一般來說,同時讀寫一個文件並不可取。硬要如此的話,使用fseek定位好寫入位置後再寫入
『玖』 C語言中fputs()函數的返回值是什麼
fputs
功能:送一個字元串到一個流中
表頭文件:#include<stdio.h>
函數原型:int fputs(char *string, FILE *stream);
string 需送入流的字元串指針
stream 一個FILE型的指針
返回值: 如果成功輸入,fputs 返回 0,否則返回EOF(-1)
『拾』 C語言文件操作fputs用法問題
把寫文件代碼全弄上來才能知道哪裡錯了。看樣子buf應該是二維數組,那麼寫一行應該是fputs(buf[x],fptr);這樣的格式,其中x是數組行下標。以上只是猜測,不見得說得一定準確。