當前位置:首頁 » 編程語言 » c語言fput
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言fput

發布時間: 2022-06-14 05:54:29

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語言中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用法問題

把寫文件代碼全弄上來才能知道哪裡錯了。看樣子buf應該是二維數組,那麼寫一行應該是fputs(buf[x],fptr);這樣的格式,其中x是數組行下標。以上只是猜測,不見得說得一定準確。

❺ c語言使用fputs函數寫入無效

文件指針的問題,一般來說,同時讀寫一個文件並不可取。硬要如此的話,使用fseek定位好寫入位置後再寫入

❻ C語言中fgets和fputs的問題......

//原因是:你似乎對feof有一定的誤解

//當IO流讀到文件最後一個字元的時候是不會設置EOF位的

//這時調用feof,會返回false

//EOF設置當且僅當讀取完最後一個字元後,再繼續讀取,這時相當於調用fgetc()
//獲取不存在的字元,返回EOF,設置EOF位置

//然後調用feof,會返回true

//理論上的fgets工作原理

char*fgets(constchar*str,intnum,FILE*fp)
{
if(str==NULL||num<=0||fp==NULL)
returnNULL;

size_tindex=0;
intch;

while(index<num-1)
{
ch=getc(fp);
if(ch==EOF)
{
if(index==0)
returnNULL;
break;
}
else
{
str[index++]=ch;
if(ch==' ')
break;
}
}
str[index]='';
returnstr;
}

當你是以 結尾的行時,fgets默認輸入結束,它並不知道這個是最後一行
也就是沒有設置EOF

當再次用fgets讀取時,由於再讀入任何數據之前,遇見了EOF,所以它立即返回,並且
沒有修改str

然後你就又輸出了一行

以下是fgets函數說明

char * fgets ( char * str, int num, FILE * stream );

Get string from stream

Reads characters fromstreamand stores them as a C string intostruntil (num-1) characters have been read or either a newline or theend-of-fileis reached, whichever happens first.

A newline character makesfgetsstop reading, but it is considered a valid character by the function and included in the string copied tostr.

A terminating null character is automatically appended after the characters copied tostr.

Notice thatfgetsis quite different fromgets: not onlyfgetsaccepts astreamargument, but also allows to specify the maximum size ofstrand includes in the string any ending newline character.

Parameters

  • str

  • Pointer to an array ofchars where the string read is copied.

  • num

  • Maximum number of characters to be copied intostr(including the terminating null-character).

  • stream

  • Pointer to aFILEobject that identifies an input stream.
    stdincan be used as argument to read from thestandard input.

Return Value

On success, the function returnsstr.
If theend-of-fileis encountered while attempting to read a character, theeof indicatoris set (feof). If this happens before any characters could be read, the pointer returned is a null pointer (and the contents ofstrremain unchanged).
If a read error occurs, theerror indicator(ferror) is set and a null pointer is also returned (but the contents pointed bystrmay have changed).

❼ 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和fputs函數的操作

看來你對fgets這個函數還不太了解。
它的原型是char *fgets(char *s, int n, FILE *stream);
它從流中讀取n-1個字元,除非讀完一行,參數s是來接收字元串,如果成功則返回s的指針,否則返回NULL。
你這里是n是2,當然讀取一個字元了。

❿ C語言fputs的簡單問題,有提示,答案對,立刻採納,絕不拖延

fputs的第一個參數是const char *,但是你傳入了一個struct aa *,所以出現這個警告。
消除警告的方法:
改成:fputs((char *)ff,w);

但是即使這么改了,我估計還是要出錯。因為裡面有些奇怪的東西,不知道是你故意這么寫的還是你不小心弄錯了。我就不復制你所有的代碼了,你自己對照下想想看:
struct aa
{
char name[10][10]; // 看來你這里aa表示一個人,那麼為什麼一個人需要10個名字?推薦改正:char name[10];
char sex[10];
int cj;
int number;
}

scanf("%s",boy[i].name[i]); // 推薦改正:scanf("%s",boy[i].name);
fputs(ff,w); // 推薦改正:fputs((*ff).name, w);

這三個地方要改必須全改,只改一個地方會出錯。