为什么我写的程序不能提交给c语言fopen的返回值测评系统?程序里有fopen函数

C语言函数fopen
C语言函数fopen
  函数功能:打开一个
  函数原型:FILE
char * path,const char * mode);
  相关函数:,,[1],_wfopen
  所需库:&&/span&&
  返回值:顺利打开后,指向该流的就会被返回。如果打开失败则返回NULL,并把存在errno
  一般而言,打开后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在f()后作错误判断及处理。
  参数说明:
  参数path串包含欲打开的路径及文件名,参数mode字符串则代表着流。
  mode有下列几种形态字符串:
以方式打开,该文件必须存在。
以可读写方式打开,该文件必须存在。
读写打开一个,允许读。
读写打开一个文本,允许读和写。
打开只写,若文件存在则文件长度清为0,即该文件内容会消失。若不存在则建立该文件。
打开可读写,若文件存在则文件长度清为零,即该文件内容会消失。若不存在则建立该文件。
以附加的打开只写。若不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
以附加方式打开可读写的。若不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)
只写打开或新建一个;只允许写数据。
读写打开或建立一个,允许读和写。
读写打开一个,允许读或在文件末追加数据。
打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。
  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以打开文件。由f()所建立的新会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask
  有些C可能不完全提供所有这些功能,有的C不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
  二进制和文本模式的区别
  1.在windows系统中,文本模式下,文件以"\r\n"代表换行。若以文本模式打开文件,并用fputs等函数写入换行符"\n"时,函数会自动在"\n"前面加上"\r"。即实际写入文件的是"\r\n"
  2.在类Unix/Linux系统中文本模式下,文件以"\n"代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。
  程序示例1
  #include
  #include
//为了使用exit()
fname[50]; //用于存放名
  printf("输入文件名:");
  scanf("%s",fname);
  fp=f(fname,"r");
//只供读取
  if(fp==NULL)
//如果失败了
  printf("错误!");
  exit(1);
//中止程序
  //getc()用于在打开中获取一个字符
  while((ch=getc(fp))!=EOF)
  putchar(ch);
  return
  注意!初学者往往会犯一个错误,即在输入名时不加后缀名,请注意加上!
  程序示例2[2]
  #include
*stream, *stream2;
main( void )
Open for read (will fail if file "crt_fopen.c" does not
(stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996
Note: f&is
consider using&&instead
  printf(
"The file 'crt_f.c'
was not&ed\n"
  printf(
"The file 'crt_f.c'
Open for write
(stream2 = fopen( "data2", "w+" )) == NULL ) // C4996
  printf(
"The file 'data2' was not opened\n" );
  printf(
"The file 'data2' was opened\n" );
Close stream if it is not NULL
stream ) )
  printf(
"The file 'crt_f.c'
was not closed\n" );
All other files are closed:
  numclosed
  printf(
"Number of files closed by _:
%u\n", numclosed );
在文件操作时,需要注意以下几点问题
  1、在定义文件指针时,要将文件指针指向空;如
FILE *fp = NULL;
  2、文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用内存泄露和在下次访问文件时出现问题。
  3、文件关闭后,需要将文件指针指向空,这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp
  示例程序:
  #include
  #define
F_PATH "d:\myfile\file.dat"
main(void)
*fp = NULL; //需要注意
= fopen(F_PATH, "r");
  if(NULL
  return
-1; //要返回错误代码
  fclose(fp);
= NULL; //需要指向空,否则会指向原打开文件地址
  return
php程序-fopen
3, PHP 4, PHP 5)
  说明  
resource&f&(
string filename, string mode, [ bool use_include_path, [resource
zcontext]] )
  f()&将
filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个
URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP
将发出一条消息来帮助检查中潜在的问题并将
filename 当成一个普通的名继续执行下去。
PHP 认为 filename 指定的是一个本地,将尝试在该文件上打开一个流。该必须是
PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了 安全模式
或者&_basedir
则会应用进一步的限制。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。[c语言常用数学函数]C语言fopen等几个f函数用法
· · · ·
您当前的位置: → [c语言常用数学函数]C语言fopen等几个f函数用法
[c语言常用数学函数]C语言fopen等几个f函数用法
篇一 : C语言fopen等几个f函数用法C语言函数fopen函数简介函数功能: 打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s[1] ,_wfopen所需库: &stdio.h&返回值: 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 打开只读文件,该文件必须存在。r+ 打开可读写的文件,该文件必须存在。rb+ 读写打开一个二进制文件,只允许读写数据。rt+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。表格 1. fopen() 中的 mode 的可能值列表注: 不同的操作系统家族具有不同的行结束习惯。当你写入一个文本文件并想插入一个新行时,你需要使用符合你操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。与此对应你还可以使用 'b' 来强制使用二进制模式,这样就不会转换你的数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。默认的转换模式依赖于 SAPI 和你使用的 PHP 版本,因此为了便于移植鼓励你总是指定恰当的标记。当操作以 \n 作为行结束定界符的纯文本文件时,如果你还期望这些文件可以用于其它应用程序例如 Notepad,则应该在脚本中使用 't' 模式。在所有其它情况下使用 'b'。 在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。注: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。注: 再一次,为移植性考虑,强烈建议你重写那些依赖于 't' 模式的代码使其使用正确的行结束符并改成 'b' 模式。如果也需要在 include_path 中搜寻文件的话,可以将可选的第三个参数 use_include_path 设为 '1' 或 TRUE。 如果打开失败,本函数返回 FALSE。 程序示例程序示例1#include &stdio.h&#include &stdlib.h& //为了使用exit()int main(){FILE*char fname[50]; //用于存放文件名printf("输入文件名:");scanf("%s",fname);fp=fopen(fname,"r"); //只供读取if(fp==NULL) //如果失败了{printf("错误!");exit(1); //中止程序}//getc()用于在打开文件中获取一个字符while((ch=getc(fp))!=EOF)putchar(ch);fclose(fp); //关闭文件return 0;}注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上! 程序示例2[2]#include &stdio.h&FILE *stream, *stream2;int main( void ){// Open for read (will fail if file "crt_fopen.c" does not exist)if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996// Note: consider using fopen_s insteadprintf( "The file 'crt_fopen.c' was not opened\n" );elseprintf( "The file 'crt_fopen.c' was opened\n" );// Open for writeif( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996printf( "The file 'data2' was not opened\n" );elseprintf( "The file 'data2' was opened\n" );// Close stream if it is not NULLif( stream){if ( fclose( stream ) ){printf( "The file 'crt_fopen.c' was not closed\n" );}}// All other files are closed:numclosed = _fcloseall( );printf( "Number of files closed by _fcloseall: %u\n", numclosed );}说明resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是"scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了 安全模式 或者 open_basedir 则会应用进一步的限制。2 函数名: fclose功 能: 关闭一个流。注意:使用fclose函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。用 法: int fclose(FILE *stream);fread函数和fwrite函数 21:14:23 阅读1686 评论3 字号:大中小 订阅1.函数功能用来读写一个数据块。2.一般调用形式fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);3.说明(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。(2)size:要读写的字节数;(3)count:要进行读写多少个size字节的数据项;(4)fp:文件型指针。注意:1 完成次写操(fwrite())作后必须关闭流(fclose());2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。文件使用之后一定要关闭,否则将不能正确显示内容.fwrite:读入两个学生信息然后用fwrite存入文件fread:用fread从文件中读出学生信息。fwrite.c#include &stdio.h&#define SIZE 2struct student_type{char name[10];char addr[10];}stud[SIZE];void save(){FILE *if((fp=fopen("stu_list","wb"))==NULL){printf("cant open the file");exit(0);}for(i=0;i&SIZE;i++){if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)printf("file write error\n");}fclose(fp);}main(){for(i=0;i&SIZE;i++){scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr); save();}for(i=0;i&SIZE;i++){printf("%s,%d,%d",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); }}fread.c#include &stdio.h&#define SIZE 2struct student_type{char name[10];char addr[10];}stud[SIZE];void read(){FILE *if((fp=fopen("stu_list","rb"))==NULL){printf("cant open the file");exit(0);}for(i=0;i&SIZE;i++){if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1) printf("file read error\n");}fclose(fp);}main(){read();for(i=0;i&SIZE;i++){printf("%s,%d,%d,%s",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);printf("\n");}}printf与fprintf函数的区别printf是标准输出流的输出函数,用来向屏幕这样的标准输出设备输出,而fprintf则是向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上printf是有缓冲的输出,fprintf没有缓冲fprintf()传送输出到一个流中的函数原形:int fprintf(FILE *stream,const char *format[,argument,...])功能 &javascript:void(0)&:①向文件指针指向的文件输出ASCⅡ代码②向显示器输出错误信息 &javascript:void(0)&使用形式:①fprintf(文件指针,"输出格式",输出项系列);②fprintf(stderr,"错误信息");使用实例:fprintf(stream,"%d %c %f",i,c,f);其中定义FILE *返回值:成功则返回输出的字节数,错误则返回EOF。头文件:stdio.h===================================================sprintf()格式化输出到数组的函数原形∶int sprintf(buf,format,arg_list)其中char *功能∶把arg_list参量的值按format的格式输出到buf中。例∶sprintf(buffer,"相对扇区号∶%s(其中∶柱面号为%d/磁头号为%d/扇区号为%d)",string,cyls,head,sector);其中char buffer[100];char *string=" ";int cyls,head,返回值∶实际写入数组的字符个数。头文件∶stdio.hsprintf 是个变参函数,定义如下:int sprintf(char *buffer,const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。 格式化数字字符串sprintf 最常见的应用之一莫过于把整数打印到字符串中....格式化读写函数fscanf和fprintffscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:fscanf(fp,"%d%s",&i,s);fprintf(fp,"%d%c",j,ch);用fscanf和fprintf函数也可以完成以上学生信息的问题。修改后的程序下所示。 #include&stdio.h&struct stu{char name[10];char addr[15];}boya[2],boyb[2],*pp,*main(){FILE *pp=qq=if((fp=fopen("stu_list","wb+"))==NULL){printf("Cannot open file strike any key exit!");getch();exit(1);}printf("\ninput data\n");for(i=0;i&2;i++,pp++)scanf("%s%d%d%s",pp-&name,&pp-&num,&pp-&age,pp-&addr); pp=for(i=0;i&2;i++,pp++)fprintf(fp,"%s %d %d %s\n",pp-&name,pp-&num,pp-&age,pp-& addr);rewind(fp);for(i=0;i&2;i++,qq++)fscanf(fp,"%s %d %d %s\n",qq-&name,&qq-&num,&qq-&age,qq-&addr); printf("\n\nname\tnumber age addr\n");qq=for(i=0;i&2;i++,qq++)printf("%s\t%5d %7d %s\n",qq-&name,qq-&num, qq-&age,qq-&addr);fclose(fp);}Ferror和clearerr函数名: ferror功 能: 在调用各种输入输出函数(如 putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。 它的一般调用形式为ferroe(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件 每一次调用输入输出函数,均产生一个新的ferror函 数值,因此,应当在调用一个输入输出函数后立即检 查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。用 法: int ferror(FILE *stream);程序例:#include &stdio.h&int main(void){FILE */* open a file for writing */stream = fopen("DUMMY.FIL", "w");/* force an error condition by attempting to read */(void) getc(stream);if (ferror(stream)) /* test for an error on the stream */{/* display an error message */printf("Error reading from DUMMY.FIL\n");/* reset the error and EOF indicators */clearerr(stream);}fclose(stream);return 0;}函数名: clearerr功 能: 复位错误标志clearerr函数重置错误标记和给出的流的EOF指针. 当发生错误时,你可以使用perror()判断实际上发生了何种错误用 法:void clearerr(FILE *stream);程序例:#includeint main(void){FILE */* open a file for writing */fp = fopen("DUMMY.FIL", "w");/* force an error condition by attempting to read */ch = fgetc(fp); printf("%c\n",ch); if (ferror(fp)) { /* display an error message */ printf("Error reading from DUMMY.FIL\n"); /* reset the error and EOF indicators */ clearerr(fp); } fclose(fp); return 0; }篇二 : C语言函数题编写一个函数,在非递减数列数中插入一个数。插入后,数C语言函数题编写一个,在非递减数列数中插入一个数。插入后,数列仍然维持有序。如果有相同的数,要插入在相同的数的后面。#include "stdio.h"/*插入一个整形数使数组保持非递减*/void charu(int a[],int n)/*参数传递:数组首地址,元素个数*/{int i,x,t;/*变量初始化*/printf("input the number:");/*提示输入*/scanf("%d",&t);for(i=0;i<n;i++)if(t{x=a[i];a[i]=t;t=x;}if(i==n)/*大于所有元素时插入到数组尾*/a[n]=t;}main(){int shuzu[10]={2,5,9,14,25};/*定义 初始化一个数组*/charu(shuzu,5);/*调用插入函数*/for(i=0;i<6;i++)printf("%d,",shuzu[i]); /*输出查看结果*/}程序调试通过篇三 : C语言fopen等几个f函数用法C语言函数fopen函数简介函数功能: 打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s[1] ,_wfopen所需库: &stdio.h&返回值: 文件顺利打开后,指向该流的文件指针就会被返回。(]若果文件打开失败则返回NULL,并把错误代码存在errno 中。一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 打开只读文件,该文件必须存在。r+ 打开可读写的文件,该文件必须存在。rb+ 读写打开一个二进制文件,只允许读写数据。rt+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。fopen C语言fopen等几个f函数用法表格 1. fopen() 中的 mode 的可能值列表注: 不同的操作系统家族具有不同的行结束习惯。()当你写入一个文本文件并想插入一个新行时,你需要使用符合你操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。Windows 下提供了一个文本转换标记(&#39;t&#39;)可以透明地将 \n 转换为 \r\n。与此对应你还可以使用 &#39;b&#39; 来强制使用二进制模式,这样就不会转换你的数据。要使用这些标记,要么用 &#39;b&#39; 或者用 &#39;t&#39; 作为 mode 参数的最后一个字符。默认的转换模式依赖于 SAPI 和你使用的 PHP 版本,因此为了便于移植鼓励你总是指定恰当的标记。当操作以 \n 作为行结束定界符的纯文本文件时,如果你还期望这些文件可以用于其它应用程序例如 Notepad,则应该在脚本中使用 &#39;t&#39; 模式。在所有其它情况下使用 &#39;b&#39;。 在操作二进制文件时如果没有指定 &#39;b&#39; 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。注: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 &#39;b&#39; 标记。fopen C语言fopen等几个f函数用法注: 再一次,为移植性考虑,强烈建议你重写那些依赖于 &#39;t&#39; 模式的代码使其使用正确的行结束符并改成 &#39;b&#39; 模式。[]如果也需要在 include_path 中搜寻文件的话,可以将可选的第三个参数 use_include_path 设为 &#39;1&#39; 或 TRUE。 如果打开失败,本函数返回 FALSE。 程序示例程序示例1#include &stdio.h&#include &stdlib.h& //为了使用exit()int main(){FILE*char fname[50]; //用于存放文件名printf("输入文件名:");scanf("%s",fname);fp=fopen(fname,"r"); //只供读取if(fp==NULL) //如果失败了{printf("错误!");exit(1); //中止程序}//getc()用于在打开文件中获取一个字符while((ch=getc(fp))!=EOF)putchar(ch);fclose(fp); //关闭文件return 0;}注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上! 程序示例2[2]#include &stdio.h&FILE *stream, *stream2;int main( void ){// Open for read (will fail if file "crt_fopen.c" does not exist)if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996// Note: consider using fopen_s insteadprintf( "The file &#39;crt_fopen.c&#39; was not opened\n" );elseprintf( "The file &#39;crt_fopen.c&#39; was opened\n" );// Open for writeif( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996printf( "The file &#39;data2&#39; was not opened\n" );fopen C语言fopen等几个f函数用法elseprintf( "The file &#39;data2&#39; was opened\n" );扩展:c语言fopen函数 / c语言中fopen函数 / c语言fopen函数头文件// Close stream if it is not NULLif( stream){if ( fclose( stream ) ){printf( "The file &#39;crt_fopen.c&#39; was not closed\n" );}}// All other files are closed:numclosed = _fcloseall( );printf( "Number of files closed by _fcloseall: %u\n", numclosed );}说明resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )fopen() 将 filename 指定的名字资源绑定到一个流上。[]如果 filename 是"scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了 安全模式 或者 open_basedir 则会应用进一步的限制。2 函数名: fclose功 能: 关闭一个流。注意:使用fclose函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。用 法: int fclose(FILE *stream);fopen C语言fopen等几个f函数用法fread函数和fwrite函数 21:14:23 阅读1686 评论3 字号:大中小 订阅1.函数功能用来读写一个数据块。[]2.一般调用形式fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);3.说明(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。(2)size:要读写的字节数;(3)count:要进行读写多少个size字节的数据项;(4)fp:文件型指针。注意:1 完成次写操(fwrite())作后必须关闭流(fclose());2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。文件使用之后一定要关闭,否则将不能正确显示内容.fwrite:读入两个学生信息然后用fwrite存入文件fread:用fread从文件中读出学生信息。fwrite.c#include &stdio.h&#define SIZE 2struct student_type{char name[10];fopen C语言fopen等几个f函数用法char addr[10];}stud[SIZE];void save(){FILE *if((fp=fopen("stu_list","wb"))==NULL){printf("cant open the file");exit(0);}for(i=0;i&SIZE;i++){if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)printf("file write error\n");}fclose(fp);}main(){for(i=0;i&SIZE;i++){scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].addr); save();}for(i=0;i&SIZE;i++){printf("%s,%d,%d",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); }}fopen C语言fopen等几个f函数用法fread.c#include &stdio.h&#define SIZE 2struct student_type{char name[10];char addr[10];}stud[SIZE];void read(){FILE *if((fp=fopen("stu_list","rb"))==NULL){printf("cant open the file");exit(0);}for(i=0;i&SIZE;i++){if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1) printf("file read error\n");}fclose(fp);}main(){read();fopen C语言fopen等几个f函数用法for(i=0;i&SIZE;i++){printf("%s,%d,%d,%s",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);printf("\n");}}printf与fprintf函数的区别printf是标准输出流的输出函数,用来向屏幕这样的标准输出设备输出,而fprintf则是向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上printf是有缓冲的输出,fprintf没有缓冲fprintf()传送输出到一个流中的函数原形:int fprintf(FILE *stream,const char *format[,argument,...])功能 &javascript:void(0)&:①向文件指针指向的文件输出ASCⅡ代码②向显示器输出错误信息 &javascript:void(0)&使用形式:①fprintf(文件指针,"输出格式",输出项系列);②fprintf(stderr,"错误信息");使用实例:fprintf(stream,"%d %c %f",i,c,f);其中定义FILE *返回值:成功则返回输出的字节数,错误则返回EOF。[)头文件:stdio.h===================================================扩展:c语言fopen函数 / c语言中fopen函数 / c语言fopen函数头文件sprintf()格式化输出到数组的函数原形∶int sprintf(buf,format,arg_list)其中char *功能∶把arg_list参量的值按format的格式输出到buf中。例∶sprintf(buffer,"相对扇区号∶%s(其中∶柱面号为%d/磁头号为%d/扇区号为%d)",string,cyls,head,sector);其中char buffer[100];char *string=" ";int cyls,head,返回值∶实际写入数组的字符个数。fopen C语言fopen等几个f函数用法头文件∶stdio.hsprintf 是个变参函数,定义如下:int sprintf(char *buffer,const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。[)而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。 格式化数字字符串sprintf 最常见的应用之一莫过于把整数打印到字符串中....格式化读写函数fscanf和fprintffscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:fscanf(fp,"%d%s",&i,s);fprintf(fp,"%d%c",j,ch);用fscanf和fprintf函数也可以完成以上学生信息的问题。修改后的程序下所示。 #include&stdio.h&struct stu{char name[10];char addr[15];}boya[2],boyb[2],*pp,*main(){FILE *fopen C语言fopen等几个f函数用法pp=qq=if((fp=fopen("stu_list","wb+"))==NULL){printf("Cannot open file strike any key exit!");getch();exit(1);}printf("\ninput data\n");for(i=0;i&2;i++,pp++)scanf("%s%d%d%s",pp-&name,&pp-&num,&pp-&age,pp-&addr); pp=for(i=0;i&2;i++,pp++)fprintf(fp,"%s %d %d %s\n",pp-&name,pp-&num,pp-&age,pp-& addr);rewind(fp);for(i=0;i&2;i++,qq++)fscanf(fp,"%s %d %d %s\n",qq-&name,&qq-&num,&qq-&age,qq-&addr); printf("\n\nname\tnumber age addr\n");qq=for(i=0;i&2;i++,qq++)printf("%s\t%5d %7d %s\n",qq-&name,qq-&num, qq-&age,qq-&addr);fclose(fp);}fopen C语言fopen等几个f函数用法Ferror和clearerr函数名: ferror功 能: 在调用各种输入输出函数(如 putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。(] 它的一般调用形式为ferroe(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件 每一次调用输入输出函数,均产生一个新的ferror函 数值,因此,应当在调用一个输入输出函数后立即检 查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。用 法: int ferror(FILE *stream);程序例:#include &stdio.h&int main(void){FILE */* open a file for writing */stream = fopen("DUMMY.FIL", "w");/* force an error condition by attempting to read */(void) getc(stream);if (ferror(stream)) /* test for an error on the stream */{/* display an error message */printf("Error reading from DUMMY.FIL\n");/* reset the error and EOF indicators */clearerr(stream);}fclose(stream);return 0;}函数名: clearerr功 能: 复位错误标志clearerr函数重置错误标记和给出的流的EOF指针. 当发生错误时,你可以使用perror()判断实际上发生了何种错误用 法:void clearerr(FILE *stream);程序例:#includeint main(void){FILE */* open a file for writing */fp = fopen("DUMMY.FIL", "w");/* force an error condition by attempting to read */fopen C语言fopen等几个f函数用法ch = fgetc(fp); printf("%c\n",ch); if (ferror(fp)) { /* display an error message */ printf("Error reading from DUMMY.FIL\n"); /* reset the error and EOF indicators */ clearerr(fp); } fclose(fp); return 0; }扩展:c语言fopen函数 / c语言中fopen函数 / c语言fopen函数头文件篇四 : 在C语言源程序中调用API函数ShellExecute在C语言程序中调用API函数ShellExecute 有时我们希望在C语言程序中调用一个其他的可执行程序例如记事本程序,希望打开一个文件例如播放一个音频文件或者视频文件。我们可以在程序中调用API函数ShellExecute来达到这一目的。ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。一、API函数ShellExecute的说明如下:所在头文件(VC):#include &windows.h&。ShellExecute函数原型及参数含义如下:ShellExecute( hWnd: HWND; {指定父窗口句柄}Operation: PC {指定动作, 譬如: open、print}FileName: PC {指定要打开的文件或要执行的程序}Parameters: PC {给要打开的程序指定命令行参数; 如果打开的是文件这里应该是 NULL}Directory: PC {指定默认目录}ShowCmd: Integer {打开选项}): HINST; {执行成功会返回应用程序句柄; 如果这个值 &= 32, 表示执行错误}//返回值可能的错误有: = 0 {内存不足}ERROR_FILE_NOT_FOUND = 2; {文件名错误}ERROR_PATH_NOT_FOUND = 3; {路径名错误}ERROR_BAD_FORMAT = 11; {EXE 文件无效}SE_ERR_SHARE = 26; {发生共享错误}SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或无效}SE_ERR_DDETIMEOUT = 28; {超时}SE_ERR_DDEFAIL = 29; {DDE 事务失败}SE_ERR_DDEBUSY = 30; {正在处理其他 DDE 事务而不能完成该 DDE 事务}SE_ERR_NOASSOC = 31; {没有相关联的应用程序}//ShowCmd 参数可选值:SW_HIDE = 0; {隐藏}SW_SHOWNORMAL = 1; {显示激活窗口,窗口为默认的正常大小,不是最大化或最小化,窗口位置为默认的位置。}SW_NORMAL = 1; {同 SW_SHOWNORMAL}SW_SHOWMINIMIZED = 2; {最小化, 激活}SW_SHOWMAXIMIZED = 3; {最大化, 激活}SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活} SW_SHOW = 5; {同 SW_SHOWNORMAL}SW_MINIMIZE = 6; {最小化, 不激活}SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}SW_RESTORE = 9; {同 SW_SHOWNORMAL}SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}SW_MAX = 10; {同 SW_SHOWNORMAL}二、例子例1.调用计算器ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);例2.调用记事本ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL);例3.打开C:/Test.txt 文件ShellExecute(NULL,"open","C://Test.txt",NULL,NULL,SW_SHOWNORMAL);例4.打开网页ShellExecute(NULL, "open", ", NULL, NULL, SW_SHOWNORMAL);例5.打开目录D:/CShellExecute(NULL,"explore", "D://C ",NULL,NULL,SW_SHOWNORMAL);例6.打印文件C:/Test.txtShellExecute(NULL,"print","C://Test.txt",NULL,NULL, SW_HIDE);例7.播放一个视频文件,电脑上已经安装了视频播放器例如QQ影音ShellExecute(NULL,"open","E:\\资料\\下载视频\\二泉映月.flv",NULL,NULL,SW_SHOWNORMAL);函数的参数进一步说明如下:●hWnd:用于指定父窗口句柄。电脑执行shellExecute函数所指定的程序(或打开指定的文件)时,会生成一个窗口。这里的hWnd用于指定其父窗口句柄。如果程序执行过程出现错误,作为提示错误的Windows消息窗口也会显示在父窗口中。如果设置为空(NULL),那么表示以桌面窗口作为父窗口。关于父窗口和子窗口的说明如下:一个主窗口所包含的窗口称为其子窗口。子窗口显示在父窗口中。当父窗口移动时,子窗口随之移动。当父窗口被销毁时,子窗口随之销毁。●Operation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为NULL时,表示执行默认操作“open”。●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为NULL或PChar(0)。●Directory:用于指定要运行的程序(或要打开的文件)所在目录。两种情况下此项可以写成NULL。第一,如果在FileName中已经指明了要执行的程序所在目录,例如FileName为C://Test.txt,则此项可以为NULL。第二,如果要执行的程序就在系统环境变量path所指定的目录中,则此项可以为NULL,原因是电脑会自动到path所指定的目录中去找这个程序。●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。
上一篇文章:
下一篇文章:
本文标题:[c语言常用数学函数]C语言fopen等几个f函数用法&版权说明
文章标题: 文章地址:
1、《[c语言常用数学函数]C语言fopen等几个f函数用法》一文由262阅读网()网友提供,版权归原作者本人所有,转载请注明出处!
2、转载或引用本网内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本网内容原意进行曲解、修改,同时必须保留本网注明的"稿件来源",并自负版权等法律责任。
3、对于不当转载或引用本网内容而引起的民事纷争、行政处理或其他损失,本网不承担责任。

我要回帖

更多关于 c语言fopen文件路径 的文章

 

随机推荐