A. C語言,往文件中寫入數據的問題
fclose(fp):函數fclose()關閉給復出的文件流,
釋放已關制聯到流的所有緩沖區.
fclose()執行成功時返回0,否則返回EOF.
加上這一句是為了保護你的文件
如果不寫這句
那麼別的程序也可以隨意的對該文件進行寫入
這樣你的文件就是亂套了。
首先樓主要搞清楚getchar()是什麼意思
getchar()
相當於
getc(stdin)也就是從stdin緩沖流裡面讀數據
你寫這句也是為了防止你輸入字元後後面還有殘余
但是你第二個是讀文件數據流
根本就沒有讀緩沖流
所以不寫那句也可以的
不知道樓主明白否?
補充回答:
樓主沒有弄明白什麼是EOF
EOF常被作為文件結束的標志。EOF
的值通常為
-1
它不是字元串
他相當於宏定義
它是不會被寫入到文件當中的
如樓主還有疑問
直接hi我吧
B. c語言中怎麼向文件中寫入數據啊 具體點 謝謝
不知你向文件輸入的是什麼數據,輸入數據的函數很多,有fputc(s,fp);有fwrite()函數、、、、
下面是想文件輸入字元,並把字元串中的小寫字元轉換成大寫字元:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
FILE *fp;
char filename[20];
printf("請輸入文件的名稱:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open file ,,,\n");
exit(0);
}
printf("請輸入字元直至結束(ctrl +z):");
fflush(stdin);
char s;
while(scanf("%c",&s),=EOF)
{
if(islower(s))
s=toupper(s);//把小寫字元轉換成大寫字元
fputc(s,fp);
}
rewind(fp);//是位置指針重新返迴文件的開頭,此函數沒有返回值
if((fp=fopen(filename,"r"))==NULL)//以讀的方式打開文件
{
printf("cannot open file ,,,\n");
exit(0);
}
while(,feof(fp))
{
s=getc(fp);
putchar(s);
}
return 0;
}
測試:
請輸入文件的名稱:hello
請輸入字元直至結束(ctrl +z):hello world ,
Z
Z。
C. 在C程序中,可把整型數以二進制形式存放到文件中的函數是
fwrite函數
【補充】:
功功能:
c語言函數,向文件寫入一個數據塊
2用法:
size_t
fwrite(const
void*
buffer,
size_t
size,
size_t
count,
file*
stream);
注意:這個函數以二內進制形式對文件進容行操作,不局限於文本文件
返回值:返回實際寫入的數據塊數目
(1)buffer:是一個指針,對fwrite來說,是要獲取數據的地址;
(2)size:要寫入內容的單位元組數;
(3)count:要進行寫入size位元組的數據項的個數;
(4)stream:目標文件指針;
(5)返回實際寫入的數據項個數count。
說明:寫入到文件的哪裡?
這個與文件的打開模式有關,如果是w+,則是從file
pointer指向的地址開始寫,替換掉之後的內容,文件的長度可以不變,stream的位置移動count個數;如果是a+,則從文件的末尾開始添加,文件長度加大。
fseek對此函數有作用,但是fwrite[1]
函數寫到用戶空間緩沖區,並未同步到文件中,所以修改後要將內存與文件同步可以用fflush(file
*fp)函數同步。