日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

stdio.h: C++输入输出操作

發(fā)布時(shí)間:2025/6/17 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stdio.h: C++输入输出操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

頭文件:<stdio.h>、<cstdio>

  • 1、通過(guò)“streams”來(lái)操作物理設(shè)備:如鍵盤(pán)、打印機(jī)、終端等。

  • 2、流通過(guò)指針來(lái)連接“FILE”對(duì)象,三個(gè)自動(dòng)創(chuàng)建的標(biāo)準(zhǔn)流:stdin, stdout 和 stderr。

指示信息:

  • 1、錯(cuò)誤指示:當(dāng)流操作發(fā)生錯(cuò)誤是置位,可以通過(guò)ferror函數(shù)檢查,通過(guò) clearerr, freopen 或者 rewind重置。

  • 2、文件結(jié)束:讀/寫(xiě)到文件結(jié)束時(shí)置位,可通過(guò)feof檢查,通過(guò) clearerr/freopen 或者重定位函數(shù)(rewind, fseek and fsetpos)置位。

  • 3、位置指示:在讀/寫(xiě)操作中,指向流的下一個(gè)字符的內(nèi)部指針。可以通過(guò) ftell and fgetpos獲得其值,通過(guò) rewind, fseek and fsetpos 改變其值。

一、文件操作

1、int remove ( const char * filename );

param:filename,文件名(可以包含文件路徑) return:若成功,返回0;否則返回非零值 /* remove example: remove myfile.txt */ #include <stdio.h>int main () {if( remove( "myfile.txt" ) != 0 )perror( "Error deleting file" );elseputs( "File successfully deleted" );return 0; }

2、int rename ( const char * oldname, const char * newname );

param:oldname,原文件名(可以包含文件路徑); newname,新文件名(可以包含文件路徑) return:成功重命名,返回0;否則返回非零。 /* rename example */ #include <stdio.h>int main () {int result;char oldname[] ="oldname.txt";char newname[] ="newname.txt";result= rename( oldname , newname );if ( result == 0 )puts ( "File successfully renamed" );elseperror( "Error renaming file" );return 0; }

3、FILE * tmpfile ( void );

創(chuàng)建一個(gè)臨時(shí)的二進(jìn)制文件。自動(dòng)創(chuàng)建,當(dāng)流關(guān)閉時(shí)刪除。 ret:指向臨時(shí)文件的流指針;失敗返回NULL。 /* tmpfile example */ #include <stdio.h> #include <string.h>int main () {char buffer [256];FILE * pFile;pFile = tmpfile ();do {if (!fgets(buffer,256,stdin)) break; //臨時(shí)緩沖文件流fputs (buffer,pFile);} while (strlen(buffer)>1);rewind(pFile);while (!feof(pFile)) {if (fgets (buffer,256,pFile) == NULL) break;fputs (buffer,stdout);}fclose (pFile);return 0; }

4、char * tmpnam ( char * str );

  • 返回一個(gè)文件名(與原來(lái)所有文件不同)。

  • 如果str是空指針,返回的字符串存儲(chǔ)在靜態(tài)數(shù)組中,可用返回值取得。

  • 如果str不是空指針,將指向至少 L_tmpnam字符的數(shù)組,次數(shù)組用提到的臨時(shí)文件名填充

    para:指向字符數(shù)組的指針,此字符以C-字符串存儲(chǔ)臨時(shí)文件名。 ret:成功,返回指向字符串的指針;如果str為NULL,返回指向內(nèi)部緩存的指針。失敗,返回NULL。
/* tmpnam example */ #include <stdio.h>int main () {char buffer [L_tmpnam];char * pointer;tmpnam (buffer);printf ("Tempname #1: %s\n",buffer);pointer = tmpnam (NULL);printf ("Tempname #2: %s\n",pointer);return 0; }

二、文件訪問(wèn)

1、int fclose ( FILE * stream );

描述:關(guān)閉文件。成功,返回0;失敗,返回EOF。

2、int fflush ( FILE * stream );

描述:文件等待更新(讀/寫(xiě)),文件將在輸出操作后、輸入操作前更新。成功,返回0;失敗,返回EOF。

/* fflush example */ #include <stdio.h> char mybuffer[80]; int main() {FILE * pFile;pFile = fopen ("example.txt","r+");if (pFile == NULL) perror ("Error opening file");else {fputs ("test",pFile);fflush (pFile); // flushing or repositioning requiredfgets (mybuffer,80,pFile);puts (mybuffer);fclose (pFile);return 0;} }

3、FILE * fopen ( const char * filename, const char * mode );

描述:

文件名(C-風(fēng)格字符串),mode(r,w,a,r+,w+,a+)。

成功,返回指向文件的指針;失敗,返回NULL。

4、FILE * freopen ( const char * filename, const char * mode, FILE * stream );

描述:

重新以新的文件名或模式打開(kāi)流文件。

文件名改變,先關(guān)閉原文件,斷開(kāi)流定向;然后重定向流到新的文件。如果文件名為空,改變文件的模式。

如果文件成功重新打開(kāi),返回新文件流指針;否則,返回NULL。

/* freopen example: redirecting stdout */ #include <stdio.h>int main () {freopen ("myfile.txt","w",stdout);printf ("This sentence is redirected to a file.");fclose (stdout);return 0; }

5、void setbuf ( FILE * stream, char * buffer );

描述:

流:打開(kāi)的對(duì)象

buffer:使用者申請(qǐng)的buff,至少BUFSIZ bytes。

當(dāng)文件流指向打開(kāi)的文件,但無(wú)任何讀/寫(xiě)操作時(shí)使用。

/* setbuf example */ #include <stdio.h>int main () {char buffer[BUFSIZ];FILE *pFile1, *pFile2;pFile1=fopen ("myfile1.txt","w");pFile2=fopen ("myfile2.txt","a");setbuf ( pFile1 , buffer );fputs ("This is sent to a buffered stream",pFile1);fflush (pFile1);setbuf ( pFile2 , NULL );fputs ("This is sent to an unbuffered stream",pFile2);fclose (pFile1);fclose (pFile2);return 0; }

6、int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );

描述:

改變流緩存,改變模式和大小。

如果buffer指針為空,自動(dòng)申請(qǐng)buffer。

/* setvbuf example */ #include <stdio.h>int main () { FILE *pFile;pFile=fopen ("myfile.txt","w");setvbuf ( pFile , NULL , _IOFBF , 1024 );// File operations herefclose (pFile);return 0; }

三、格式化輸入輸出

四、字符輸入輸出

五、直接輸入輸出

1、size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

描述:

從流中讀取數(shù)據(jù)塊。

讀取count元素,每個(gè)元素大小為size bytes,從stream保存到內(nèi)存塊ptr。

返回值:成功讀取的元素?cái)?shù)目。

/* fread example: read an entire file */ #include <stdio.h> #include <stdlib.h>int main () {FILE * pFile;long lSize;char * buffer;size_t result;pFile = fopen ( "myfile.bin" , "rb" );if (pFile==NULL) {fputs ("File error",stderr); exit (1);}// obtain file size:fseek (pFile , 0 , SEEK_END);lSize = ftell (pFile);rewind (pFile);// allocate memory to contain the whole file:buffer = (char*) malloc (sizeof(char)*lSize);if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}// copy the file into the buffer:result = fread (buffer,1,lSize,pFile);if (result != lSize) {fputs ("Reading error",stderr); exit (3);}/* the whole file is now loaded in the memory buffer. */// terminatefclose (pFile);free (buffer);return 0; }

2、size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

描述:寫(xiě)塊數(shù)據(jù)到流。

寫(xiě)count元素,每個(gè)元素大小為size bytes,從內(nèi)存塊ptrstream到stream。

返回值:成功寫(xiě)的元素?cái)?shù)目。

/* fwrite example : write buffer */ #include <stdio.h>int main () {FILE * pFile;char buffer[] = { 'x' , 'y' , 'z' };pFile = fopen ("myfile.bin", "wb");fwrite (buffer , sizeof(char), sizeof(buffer), pFile);fclose (pFile);return 0; }

六、文件定位

1、int fgetpos ( FILE * stream, fpos_t * pos );

描述:

在流中取回當(dāng)前的位置。

成功,返回0;失敗,返回非0.

/* fgetpos example */ #include <stdio.h> int main () {FILE * pFile;int c;int n;fpos_t pos;pFile = fopen ("myfile.txt","r");if (pFile==NULL) perror ("Error opening file");else{c = fgetc (pFile);printf ("1st character is %c\n",c);fgetpos (pFile,&pos);for (n=0;n<3;n++){fsetpos (pFile,&pos);c = fgetc (pFile);printf ("2nd character is %c\n",c);}fclose (pFile);}return 0; }

2、int fseek ( FILE * stream, long int offset, int origin );

重定位流的位置。

offset:從origin開(kāi)始的字節(jié)數(shù)。

origin:位置。(SEEK_SET SEEK_CUR SEEK_END)

成功,返回0;失敗,返回非0.

如果讀/寫(xiě)錯(cuò)誤,設(shè)置ferror。

/* fseek example */ #include <stdio.h>int main () {FILE * pFile;pFile = fopen ( "example.txt" , "wb" );fputs ( "This is an apple." , pFile );fseek ( pFile , 9 , SEEK_SET );fputs ( " sam" , pFile );fclose ( pFile );return 0; }

3、int fsetpos ( FILE * stream, const fpos_t * pos );

重新存儲(chǔ)流的當(dāng)前位置到pos。成功,返回0;失敗,返回非0。

/* fsetpos example */ #include <stdio.h>int main () {FILE * pFile;fpos_t position;pFile = fopen ("myfile.txt","w");fgetpos (pFile, &position);fputs ("That is a sample",pFile);fsetpos (pFile, &position);fputs ("This",pFile);fclose (pFile);return 0; }

4、long int ftell ( FILE * stream );

成功,返回當(dāng)前的位置。失敗,返回-1L。

得到流中當(dāng)前的位置。

/* ftell example : getting size of a file */ #include <stdio.h>int main () {FILE * pFile;long size;pFile = fopen ("myfile.txt","rb");if (pFile==NULL) perror ("Error opening file");else{fseek (pFile, 0, SEEK_END); // non-portablesize=ftell (pFile);fclose (pFile);printf ("Size of myfile.txt: %ld bytes.\n",size);}return 0; }

5、void rewind ( FILE * stream );

設(shè)置流的位置到begging。

七、異常處理

1、void clearerr ( FILE * stream );

重置error和eof標(biāo)志。

2、int feof ( FILE * stream );

檢查eof標(biāo)志。

eof置位,返回非零。否則,返回0。

3、int ferror ( FILE * stream );

檢查error標(biāo)志。

4、void perror ( const char * str );

打印錯(cuò)誤信息。

八、宏常量

BUFSIZ:緩存大小EOF:文件結(jié)尾FILENAME_MAX:文件名的最大長(zhǎng)度FOPEN_MAX:同時(shí)打開(kāi)流的極限值L_tmpnam:臨時(shí)文件名的最小長(zhǎng)度NULL:空指針TMP_MAX:臨時(shí)文件最大數(shù)量

九、類型

FILE:控制流的對(duì)象fpos_t:文件中的特定位置對(duì)象size_t:無(wú)符號(hào)整型

十、對(duì)象

stderr:標(biāo)準(zhǔn)錯(cuò)誤流,FILE * stderr;stdin:標(biāo)準(zhǔn)輸入流,FILE * stdin;stdout:標(biāo)準(zhǔn)輸出流,FILE * stdout;

總結(jié)

以上是生活随笔為你收集整理的stdio.h: C++输入输出操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。