真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ferror函數(shù)c語言 c語言!feof函數(shù)的用法

C語言當(dāng)用戶要求輸入的字符串中含有空格時(shí),應(yīng)使用的輸入函數(shù)是什么啊

用gets()函數(shù);gets從標(biāo)準(zhǔn)輸入設(shè)備讀字符串函數(shù),其可以無限讀取,不會(huì)判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時(shí)不發(fā)生溢出。

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有山東免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

功能

從stdin流中讀取字符串,直至接受到換行符或EOF時(shí)停止,并將讀取的結(jié)果存放在buffer指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘\0’空字符,并由此來結(jié)束字符串。

返回值

讀入成功,返回與參數(shù)buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發(fā)生錯(cuò)誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數(shù)檢查是發(fā)生錯(cuò)誤還是遇到EOF。

擴(kuò)展資料:

gets()函數(shù)用法:

示例

1、C:

#include stdio.h? ? //這個(gè)頭文件包含gets()函數(shù),這個(gè)函數(shù)在ISO/IEC 9899 2011(C11)標(biāo)準(zhǔn)中被移除

int main(void)

{

char str1;? //不要char*p,然后gets(p),這是錯(cuò)誤的,因?yàn)閜沒有指向有效的內(nèi)存,它可能指向任何非法地址//地方的未知大小的內(nèi)存塊,這樣以來,就可能修改了不屬于本程序的內(nèi)存的內(nèi)容

gets(str1);

printf("%s\n", str1);

return 0;

}

#include stdio.h//gets_s()用法

#define CH 20

int main(void)

{

char ch[CH];

printf("請輸入你的名字:\n");

gets_s(ch,CH);? ? ? ? ? ? ?//這里不能用gets_s(ch);

printf("這是你的名字:%s\n", ch);

return 0;

}

2、C++:

#include iostream

#include cstdio

using namespace std;

int main()

{

char str[100];

gets(str);

coutstrendl;

return 0;

}

gets()函數(shù)用來從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取字符串直到換行符結(jié)束,但換行符會(huì)被丟棄,然后在末尾添加'\0'字符。其調(diào)用格式為:

gets(s);其中s為字符串變量(字符串?dāng)?shù)組名或字符串指針)。

gets(s)函數(shù)與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函數(shù)輸入字符串時(shí)存在一個(gè)問題,就是如果輸入了空格會(huì)認(rèn)為字符串結(jié)束,空格后的字符將作為下一個(gè)輸入項(xiàng)處理,但gets()函數(shù)將接收輸入的整個(gè)字符串直到遇到換行為止。

也就是說:gets()函數(shù)讀取到\n(我們輸入的回車)于是停止讀取,但是它不會(huì)把\n包含到字符串里面去。然而,和它配合使用的puts函數(shù),卻在輸出字符串的時(shí)候自動(dòng)換行。

C語言讀入文件問題

以文件流的形式打開文件之后有多種方法可以讀取文件,這里列舉常用的幾種:

(1)?size_t?fread?(?void???*buffer,??size_t?size,??size_t?count,??FILE?*stream)?;

功?能:從一個(gè)文件流中讀數(shù)據(jù),最多讀取count個(gè)元素,每個(gè)元素size字節(jié),如果調(diào)用成功返回實(shí)際讀取到的元素個(gè)數(shù),如果不成功返回?0。

參?數(shù):

buffer:用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size*count字節(jié).

size:單個(gè)元素的大小,單位是字節(jié)

count:元素的個(gè)數(shù),每個(gè)元素是size字節(jié).

stream:輸入流(即打開文件返回的句柄)

返回值:實(shí)際讀取的元素個(gè)數(shù).如果返回值與count不相同,則可能文件結(jié)尾或發(fā)生錯(cuò)誤.

從ferror和feof獲取錯(cuò)誤信息或檢測是否到達(dá)文件結(jié)尾.

(2)?char?*fgets(char?*buf,?int?bufsize,?FILE?*stream);

功能:?從文件結(jié)構(gòu)體指針stream中讀取數(shù)據(jù),每次讀取一行。讀取的數(shù)據(jù)保存在buf指向的字符數(shù)組中,每次最多讀取bufsize-1個(gè)字符(第bufsize個(gè)字符賦'\0'),如果文件中的該行,不足bufsize個(gè)字符,則讀完該行就結(jié)束。函數(shù)成功將返回buf,失敗或讀到文件結(jié)尾返回NULL。因此我們不能直接通過fgets的返回值來判斷函數(shù)是否是出錯(cuò)而終止的,應(yīng)該借助feof函數(shù)或者ferror函數(shù)來判斷。

參數(shù):

buf:?字符型指針,指向用來存儲(chǔ)所得數(shù)據(jù)的地址。

bufsize:?整型數(shù)據(jù),指明buf指向的字符數(shù)組的大小。

stream:?文件結(jié)構(gòu)體指針,將要讀取的文件流(即打開文件返回的句柄)

(3)?int?fgetc(FILE?*stream);

功能:意為從文件指針stream指向的文件中讀取一個(gè)字符,讀取一個(gè)字節(jié)后,光標(biāo)位置后移一個(gè)字節(jié)。

參數(shù):

stream:輸入文件流(即打開文件返回的句柄)

返回值:是返回所讀取的一個(gè)字節(jié)。如果讀到文件末尾或者讀取出錯(cuò)時(shí)返回EOF。

對于文本文件要逐行處理的可以優(yōu)先考慮fgets();

若要逐個(gè)字符處理的可以優(yōu)先考慮fgetc();

若對二進(jìn)制文件或者整塊數(shù)據(jù)進(jìn)行處理的優(yōu)先考慮fread();

c語言讀取文件的問題

以文件流的形式打開文件之后有多種方法可以讀取文件,這里列舉常用的幾種:(1) size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;功 能:從一個(gè)文件流中讀數(shù)據(jù),最多讀取count個(gè)元素,每個(gè)元素size字節(jié),如果調(diào)用成功返回實(shí)際讀取到的元素個(gè)數(shù),如果不成功返回 0。參 數(shù):buffer:用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size*count字節(jié).size:單個(gè)元素的大小,單位是字節(jié)count:元素的個(gè)數(shù),每個(gè)元素是size字節(jié).stream:輸入流(即打開文件返回的句柄)返回值:實(shí)際讀取的元素個(gè)數(shù).如果返回值與count不相同,則可能文件結(jié)尾或發(fā)生錯(cuò)誤.從ferror和feof獲取錯(cuò)誤信息或檢測是否到達(dá)文件結(jié)尾.(2) char *fgets(char *buf, int bufsize, FILE *stream);功能: 從文件結(jié)構(gòu)體指針stream中讀取數(shù)據(jù),每次讀取一行。讀取的數(shù)據(jù)保存在buf指向的字符數(shù)組中,每次最多讀取bufsize-1個(gè)字符(第bufsize個(gè)字符賦'\0'),如果文件中的該行,不足bufsize個(gè)字符,則讀完該行就結(jié)束。函數(shù)成功將返回buf,失敗或讀到文件結(jié)尾返回NULL。因此我們不能直接通過fgets的返回值來判斷函數(shù)是否是出錯(cuò)而終止的,應(yīng)該借助feof函數(shù)或者ferror函數(shù)來判斷。參數(shù):buf: 字符型指針,指向用來存儲(chǔ)所得數(shù)據(jù)的地址。bufsize: 整型數(shù)據(jù),指明buf指向的字符數(shù)組的大小。stream: 文件結(jié)構(gòu)體指針,將要讀取的文件流(即打開文件返回的句柄)(3) int fgetc(FILE *stream);功能:意為從文件指針stream指向的文件中讀取一個(gè)字符,讀取一個(gè)字節(jié)后,光標(biāo)位置后移一個(gè)字節(jié)。參數(shù):stream:輸入文件流(即打開文件返回的句柄)返回值:是返回所讀取的一個(gè)字節(jié)。如果讀到文件末尾或者讀取出錯(cuò)時(shí)返回EOF。對于文本文件要逐行處理的可以優(yōu)先考慮fgets();若要逐個(gè)字符處理的可以優(yōu)先考慮fgetc();若對二進(jìn)制文件或者整塊數(shù)據(jù)進(jìn)行處理的優(yōu)先考慮fread();

c語言fread函數(shù)的用法

C語言中:fread是一個(gè)函數(shù)。從一個(gè)文件流中讀數(shù)據(jù),最多讀取count個(gè)元素,每個(gè)元素size字節(jié),如果調(diào)用成功返回實(shí)際讀取到的元素個(gè)數(shù),如果不成功或讀到文件末尾返回 0。下面我們來看看c語言fread函數(shù)的用法。

fread()函數(shù)---- Reads data from a stream.

#includestdio.h

size_t fread( void *buffer, size_t size, size_t count,FILE *stream );

從一個(gè)文件流中讀數(shù)據(jù),讀取count個(gè)元素,每個(gè)元素size字節(jié).如果調(diào)用成功返回count.如果調(diào)用成功則實(shí)際讀取size*count字節(jié)

buffer的大小至少是 size*count 字節(jié).

return:

fread returns the number of full items actually read

實(shí)際讀取的元素?cái)?shù).如果返回值與count(不是count*size)不相同,則可能文件結(jié)尾或發(fā)生錯(cuò)誤.

從ferror和feof獲取錯(cuò)誤信息或檢測是否到達(dá)文件結(jié)尾.

DEMO:

[cpp] view plain#include stdio.h

#include process.h

#include string.h

int main()

{

FILE *stream;

char msg[]="this is a test";

char buf[20];

if ((stream=fopen("dummy.fil","w+"))==NULL)

{

fprintf(stderr,"cannot open output file.\n");

return 1;

}

/*write some data to the file*/

fwrite(msg,1,strlen(msg)+1,stream);

/*seek to the beginning of the file*/

fseek(stream,0,SEEK_SET);

/*read the data and display it*/

fread(buf,1,strlen(msg)+1,stream);

printf("%s\n",buf);

fclose(stream);

system("pause");

return 0;

}

DEMO2

[cpp] view plainint main(void)

{

FILE *stream;

char list[30];

int i,numread,numwritten;

/*open file in text mode:*/

if ((stream=fopen("fread.out","w+t"))!=NULL)

{

for (i=0;i25;i++)

{

list[i]=(char)('z'-i);

}

/*write 25 characters to stram*/

numwritten=fwrite(list,sizeof(char),25,stream);

printf("Wrote %d items\n",numwritten);

fclose(stream);

}

else

printf("Problem opening the file\n");

if ((stream=fopen("fread.out","r+t"))!=NULL)

{

numread=fread(list,sizeof(char),25,stream);

printf("Number of items read =%d\n",numread);

printf("Contents of buffer=%.25s\n",list);

fclose(stream);

}

else

{

printf("File could not be opened\n");

}

system("pause");

return 0;

}

c語言的stdio.h里面包含哪些函數(shù)?能將所有的列舉出來嗎?

1 int fclose(FILE *stream)

關(guān)閉流 stream。刷新所有的緩沖區(qū)。

2 void clearerr(FILE *stream)

清除給定流 stream 的文件結(jié)束和錯(cuò)誤標(biāo)識(shí)符。

3 int feof(FILE *stream)

測試給定流 stream 的文件結(jié)束標(biāo)識(shí)符。

4 int ferror(FILE *stream)

測試給定流 stream 的錯(cuò)誤標(biāo)識(shí)符。

5 int fflush(FILE *stream)

刷新流 stream 的輸出緩沖區(qū)。

6 int fgetpos(FILE *stream, fpos_t *pos)

獲取流 stream 的當(dāng)前文件位置,并把它寫入到 pos。

7 FILE *fopen(const char *filename, const char *mode)

使用給定的模式 mode 打開 filename 所指向的文件。

8 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

從給定流 stream 讀取數(shù)據(jù)到 ptr 所指向的數(shù)組中。

9 FILE *freopen(const char *filename, const char *mode, FILE *stream)

把一個(gè)新的文件名 filename 與給定的打開的流 stream 關(guān)聯(lián),同時(shí)關(guān)閉流中的舊文件。

10 int fseek(FILE *stream, long int offset, int whence)

設(shè)置流 stream 的文件位置為給定的偏移 offset,參數(shù) offset 意味著從給定的 whence 位置查找的字節(jié)數(shù)。

11 int fsetpos(FILE *stream, const fpos_t *pos)

設(shè)置給定流 stream 的文件位置為給定的位置。參數(shù) pos 是由函數(shù) fgetpos 給定的位置。

12 long int ftell(FILE *stream)

返回給定流 stream 的當(dāng)前文件位置。

13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

把 ptr 所指向的數(shù)組中的數(shù)據(jù)寫入到給定流 stream 中。

14 int remove(const char *filename)

刪除給定的文件名 filename,以便它不再被訪問。

15 int rename(const char *old_filename, const char *new_filename)

把 old_filename 所指向的文件名改為 new_filename。

16 void rewind(FILE *stream)

設(shè)置文件位置為給定流 stream 的文件的開頭。

17 void setbuf(FILE *stream, char *buffer)

定義流 stream 應(yīng)如何緩沖。

18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

另一個(gè)定義流 stream 應(yīng)如何緩沖的函數(shù)。

19 FILE *tmpfile(void)

以二進(jìn)制更新模式(wb+)創(chuàng)建臨時(shí)文件。

20 char *tmpnam(char *str)

生成并返回一個(gè)有效的臨時(shí)文件名,該文件名之前是不存在的。

21 int fprintf(FILE *stream, const char *format, ...)

發(fā)送格式化輸出到流 stream 中。

22 int printf(const char *format, ...)

發(fā)送格式化輸出到標(biāo)準(zhǔn)輸出 stdout。

23 int sprintf(char *str, const char *format, ...)

發(fā)送格式化輸出到字符串。

24 int vfprintf(FILE *stream, const char *format, va_list arg)

使用參數(shù)列表發(fā)送格式化輸出到流 stream 中。

25 int vprintf(const char *format, va_list arg)

使用參數(shù)列表發(fā)送格式化輸出到標(biāo)準(zhǔn)輸出 stdout。

26 int vsprintf(char *str, const char *format, va_list arg)

使用參數(shù)列表發(fā)送格式化輸出到字符串。

27 int fscanf(FILE *stream, const char *format, ...)

從流 stream 讀取格式化輸入。

28 int scanf(const char *format, ...)

從標(biāo)準(zhǔn)輸入 stdin 讀取格式化輸入。

29 int sscanf(const char *str, const char *format, ...)

從字符串讀取格式化輸入。

30 int fgetc(FILE *stream)

從指定的流 stream 獲取下一個(gè)字符(一個(gè)無符號(hào)字符),并把位置標(biāo)識(shí)符往前移動(dòng)。

31 char *fgets(char *str, int n, FILE *stream)

從指定的流 stream 讀取一行,并把它存儲(chǔ)在 str 所指向的字符串內(nèi)。當(dāng)讀取 (n-1) 個(gè)字符時(shí),或者讀取到換行符時(shí),或者到達(dá)文件末尾時(shí),它會(huì)停止,具體視情況而定。

32 int fputc(int char, FILE *stream)

把參數(shù) char 指定的字符(一個(gè)無符號(hào)字符)寫入到指定的流 stream 中,并把位置標(biāo)識(shí)符往前移動(dòng)。

33 int fputs(const char *str, FILE *stream)

把字符串寫入到指定的流 stream 中,但不包括空字符。

34 int getc(FILE *stream)

從指定的流 stream 獲取下一個(gè)字符(一個(gè)無符號(hào)字符),并把位置標(biāo)識(shí)符往前移動(dòng)。

35 int getchar(void)

從標(biāo)準(zhǔn)輸入 stdin 獲取一個(gè)字符(一個(gè)無符號(hào)字符)。

36 char *gets(char *str)

從標(biāo)準(zhǔn)輸入 stdin 讀取一行,并把它存儲(chǔ)在 str 所指向的字符串中。當(dāng)讀取到換行符時(shí),或者到達(dá)文件末尾時(shí),它會(huì)停止,具體視情況而定。

37 int putc(int char, FILE *stream)

把參數(shù) char 指定的字符(一個(gè)無符號(hào)字符)寫入到指定的流 stream 中,并把位置標(biāo)識(shí)符往前移動(dòng)。

38 int putchar(int char)

把參數(shù) char 指定的字符(一個(gè)無符號(hào)字符)寫入到標(biāo)準(zhǔn)輸出 stdout 中。

39 int puts(const char *str)

把一個(gè)字符串寫入到標(biāo)準(zhǔn)輸出 stdout,直到空字符,但不包括空字符。換行符會(huì)被追加到輸出中。

40 int ungetc(int char, FILE *stream)

把字符 char(一個(gè)無符號(hào)字符)推入到指定的流 stream 中,以便它是下一個(gè)被讀取到的字符。

41 void perror(const char *str)

把一個(gè)描述性錯(cuò)誤消息輸出到標(biāo)準(zhǔn)錯(cuò)誤 stderr。首先輸出字符串 str,后跟一個(gè)冒號(hào),然后是一個(gè)空格。


當(dāng)前名稱:ferror函數(shù)c語言 c語言!feof函數(shù)的用法
轉(zhuǎn)載源于:http://weahome.cn/article/hgcpdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部