ferror函数c语言 c语言!feof函数的用法

C语言当用户要求输入的字符串中含有空格时,应使用的输入函数是什么啊

用gets()函数;gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

10年积累的成都做网站、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有山东免费网站建设让你可以放心的选择与我们合作。

功能

从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

返回值

读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

扩展资料:

gets()函数用法:

示例

1、C:

#include stdio.h    //这个头文件包含gets()函数,这个函数在ISO/IEC 9899 2011(C11)标准中被移除

int main(void)

{

char str1;  //不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址//地方的未知大小的内存块,这样以来,就可能修改了不属于本程序的内存的内容

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()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:

gets(s);其中s为字符串变量(字符串数组名或字符串指针)。

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

也就是说:gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。

C语言读入文件问题

以文件流的形式打开文件之后有多种方法可以读取文件,这里列举常用的几种:

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

功 能:从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0。

参 数:

buffer:用于接收数据的内存地址,大小至少是size*count字节.

size:单个元素的大小,单位是字节

count:元素的个数,每个元素是size字节.

stream:输入流(即打开文件返回的句柄)

返回值:实际读取的元素个数.如果返回值与count不相同,则可能文件结尾或发生错误.

从ferror和feof获取错误信息或检测是否到达文件结尾.

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

功能: 从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

参数:

buf: 字符型指针,指向用来存储所得数据的地址。

bufsize: 整型数据,指明buf指向的字符数组的大小。

stream: 文件结构体指针,将要读取的文件流(即打开文件返回的句柄)

(3) int fgetc(FILE *stream);

功能:意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。

参数:

stream:输入文件流(即打开文件返回的句柄)

返回值:是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。

对于文本文件要逐行处理的可以优先考虑fgets();

若要逐个字符处理的可以优先考虑fgetc();

若对二进制文件或者整块数据进行处理的优先考虑fread();

c语言读取文件的问题

以文件流的形式打开文件之后有多种方法可以读取文件,这里列举常用的几种:(1) size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;功 能:从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0。参 数:buffer:用于接收数据的内存地址,大小至少是size*count字节.size:单个元素的大小,单位是字节count:元素的个数,每个元素是size字节.stream:输入流(即打开文件返回的句柄)返回值:实际读取的元素个数.如果返回值与count不相同,则可能文件结尾或发生错误.从ferror和feof获取错误信息或检测是否到达文件结尾.(2) char *fgets(char *buf, int bufsize, FILE *stream);功能: 从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。参数:buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明buf指向的字符数组的大小。stream: 文件结构体指针,将要读取的文件流(即打开文件返回的句柄)(3) int fgetc(FILE *stream);功能:意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。参数:stream:输入文件流(即打开文件返回的句柄)返回值:是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。对于文本文件要逐行处理的可以优先考虑fgets();若要逐个字符处理的可以优先考虑fgetc();若对二进制文件或者整块数据进行处理的优先考虑fread();

c语言fread函数的用法

C语言中:fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。下面我们来看看c语言fread函数的用法。

fread()函数---- Reads data from a stream.

#includestdio.h

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

从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功返回count.如果调用成功则实际读取size*count字节

buffer的大小至少是 size*count 字节.

return:

fread returns the number of full items actually read

实际读取的元素数.如果返回值与count(不是count*size)不相同,则可能文件结尾或发生错误.

从ferror和feof获取错误信息或检测是否到达文件结尾.

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里面包含哪些函数?能将所有的列举出来吗?

1 int fclose(FILE *stream)

关闭流 stream。刷新所有的缓冲区。

2 void clearerr(FILE *stream)

清除给定流 stream 的文件结束和错误标识符。

3 int feof(FILE *stream)

测试给定流 stream 的文件结束标识符。

4 int ferror(FILE *stream)

测试给定流 stream 的错误标识符。

5 int fflush(FILE *stream)

刷新流 stream 的输出缓冲区。

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

获取流 stream 的当前文件位置,并把它写入到 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 读取数据到 ptr 所指向的数组中。

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

把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。

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

设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。

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

设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。

12 long int ftell(FILE *stream)

返回给定流 stream 的当前文件位置。

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

把 ptr 所指向的数组中的数据写入到给定流 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)

设置文件位置为给定流 stream 的文件的开头。

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

定义流 stream 应如何缓冲。

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

另一个定义流 stream 应如何缓冲的函数。

19 FILE *tmpfile(void)

以二进制更新模式(wb+)创建临时文件。

20 char *tmpnam(char *str)

生成并返回一个有效的临时文件名,该文件名之前是不存在的。

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

发送格式化输出到流 stream 中。

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

发送格式化输出到标准输出 stdout。

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

发送格式化输出到字符串。

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

使用参数列表发送格式化输出到流 stream 中。

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

使用参数列表发送格式化输出到标准输出 stdout。

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

使用参数列表发送格式化输出到字符串。

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

从流 stream 读取格式化输入。

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

从标准输入 stdin 读取格式化输入。

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

从字符串读取格式化输入。

30 int fgetc(FILE *stream)

从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

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

从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

32 int fputc(int char, FILE *stream)

把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。

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

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

34 int getc(FILE *stream)

从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

35 int getchar(void)

从标准输入 stdin 获取一个字符(一个无符号字符)。

36 char *gets(char *str)

从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

37 int putc(int char, FILE *stream)

把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。

38 int putchar(int char)

把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。

39 int puts(const char *str)

把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。

40 int ungetc(int char, FILE *stream)

把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。

41 void perror(const char *str)

把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。


当前文章:ferror函数c语言 c语言!feof函数的用法
转载来源:http://azwzsj.com/article/hgcpdh.html