//要另外說(shuō)下如fprintf(stderr, "Can't open %s\n", file_app);這是向文件或者系統(tǒng)設(shè)備輸出的函數(shù);但他的文件指針為stderr;這是c中的標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備指針,系統(tǒng)自動(dòng)分配為顯示器故相當(dāng)于printf("Can't open %s\n", file_app);
郊區(qū)網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
#include stdio.h
#include stdlib.h
#include string.h
#define BUFSIZE 1024
#define SLEN 81
void append(FILE *source, FILE *dest);
int main(void)
{
FILE *fa, *fs; //定義2個(gè)文件類型指針
int files = 0; // 追加文件個(gè)數(shù)
char file_app[SLEN];
char file_src[SLEN]; // 2個(gè)字符串用來(lái)儲(chǔ)存文件名;
puts("Enter name of destination file:");//輸出Enter name of destination file:
gets(file_app);//輸入要追加的文件名
if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打開文件,如果打開失敗退出;
{
fprintf(stderr, "Can't open %s\n", file_app);
exit(2);
}
if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//創(chuàng)建緩沖器與流相關(guān),大小為BUFSIZE,作用是提高IO速度;如果打開失敗退出
{
fputs("Can't create output buffer\n", stderr);
exit(3);
}
puts("Enter name of first source file (empty line to quit):");//輸出Enter name of first source file (empty line to quit):
while (gets(file_src) file_src[0] != '\0')//輸入源文件如果是空串結(jié)束循環(huán)
{
if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同
fputs("Can't append file to itself\n",stderr);
else if ((fs = fopen(file_src, "r")) == NULL)//如果打開源文件失敗
fprintf(stderr, "Can't open %s\n", file_src);
else
{
if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//創(chuàng)建緩沖器與流相關(guān),大小為BUFSIZE,作用是提高IO速度;如果打開失敗開始下次循環(huán)
{
fputs("Can't create input buffer\n",stderr);
continue;
}
append(fs, fa);//函數(shù)
if (ferror(fs) != 0)//檢查文件操作是否有錯(cuò)
fprintf(stderr,"Error in reading file %s.\n",
file_src);
if (ferror(fa) != 0)
fprintf(stderr,"Error in writing file %s.\n",
file_app);
fclose(fs);//關(guān)閉源文件
files++;//追加文件數(shù)+1
printf("File %s appended.\n", file_src);
puts("Next file (empty line to quit):");
}
}
printf("Done. %d files appended.\n", files);
fclose(fa);//關(guān)閉追加文件
return 0;
}
void append(FILE *source, FILE *dest)
{
size_t bytes;
static char temp[BUFSIZE];
while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) 0)//把源文件的內(nèi)容追加到追加文件,塊大小sizeof(char),塊數(shù)為BUFSIZE
fwrite(temp, sizeof (char), bytes, dest);//寫文件塊大小sizeof(char),塊數(shù)為BUFSIZE
}
#include iostream
#include fstream
using namespace std;
void main()
{
ifstream fin("c:\\qq.txt");
char name[2][10];
char age[2][10];
char leibie[2][20];
int i=0;
while (!fin.eof())
{
fin.getline(name[i],10,' ');
fin.getline(age[i],10,' ');
fin.getline(leibie[i],10);
coutname[i]'\t'age[i]'\t'leibie[i]endl;
i++;
}
if (strcmp(leibie[0],"實(shí)習(xí)學(xué)生")==0)
{
strcpy(leibie[0],"正式員工");
}
ofstream fout("c:\\qq.txt");
for (i=0;i2;i++)
{
foutname[i]' 'age[i]' 'leibie[i]endl;
}
}
標(biāo)準(zhǔn)函數(shù)是:fopen、fread、fwrite、fclose等函數(shù);
當(dāng)然fprintf和fscanf函數(shù)也可以進(jìn)行文件的讀寫;
有問題,請(qǐng)追問;
write()寫文件函數(shù)
原形:int
write(int
handle,char
*buf,unsigned
len)
用法:write(文件句柄,緩沖區(qū)地址,緩沖區(qū)字節(jié)長(zhǎng)度最大65534);
功能:將緩沖區(qū)的數(shù)據(jù)寫入與handle相聯(lián)的文件或設(shè)備中,handle是從creat、open、dup或dup2調(diào)用中得到的文件句柄。對(duì)于磁盤或磁盤文件,寫操作從當(dāng)前文件指針處開始,對(duì)于用O_APPEND選項(xiàng)打開的文件,寫數(shù)據(jù)之前,文件指針指向EOF;對(duì)于設(shè)備,字節(jié)被直接傳送到設(shè)備中;
返回值:實(shí)際寫入的字節(jié)數(shù)(不包括回車符),出錯(cuò)時(shí)返回-1。
頭文件:io.h
void save(){ /*建立保存文件函數(shù)*/
int i;
FILE *fp; /*定義文件型指針*/
system("CLS");
if((fp=fopen("student.txt","wb"))==NULL){ /*打開輸出文件*/
printf("不能打開文件!\n");
return; /*終止程序*/
}
for(i=0;in;i++) /*向student文件中寫入信息*/ // 這是所謂的上邊
if(fwrite(stu[i],sizeof(struct student),1,fp)!=1) // 這里寫文件上邊有寫
// fwrite() 這個(gè)函數(shù) 寫文件 // 你可以百度 fwrite( ) 百科里有介紹
printf("文件寫入錯(cuò)誤\n");
fclose(fp); /*關(guān)閉文件*/
printf("\n\n\n\n\t\t\t學(xué)生信息保存成功!\n");
printf("\n\n\n\n\t\t\t按任意鍵返回菜單!!");
getch();
}
很簡(jiǎn)單
因?yàn)闆]有關(guān)閉文件指針fp
寫完后會(huì)自動(dòng)后移
不信你可以在第一次
fwrite
后關(guān)閉文件指針
再打開
再fwrite試試
此時(shí)fp指針就又指向文件開頭了
所有關(guān)于文件指針操作的函數(shù)都是這樣的
不是因?yàn)閣b
wb
是
write
byte
二進(jìn)制寫入的意思
先操作fwrite時(shí)
是寫入內(nèi)存的
fclose時(shí)才寫入文件的
當(dāng)前標(biāo)題:c語(yǔ)言中記錄文件函數(shù) c語(yǔ)言關(guān)于文件操作的常用函數(shù)新手入門看
新聞來(lái)源:http://www.rwnh.cn/article40/hhgeho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)建站、用戶體驗(yàn)、App開發(fā)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)