❶ 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]='