|
| clearerr(清除文件流的错误旗标) |
|
相关函数
| feof |
|
表头文件
| #include<stdio.h> |
|
定义函数
| void clearerr(FILE * stream); |
|
函数说明
| clearerr()清除参数stream指定的文件流所使用的错误旗标。 |
|
返回值
| |
|
| fclose(关闭文件) |
|
相关函数
| close,fflush,fopen,setbuf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int fclose(FILE * stream); |
|
函数说明
| fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。 |
|
返回值
| 若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。 |
|
错误代码
| EBADF表示参数stream非已打开的文件。 |
|
范例
| 请参考fopen()。 |
|
| fdopen(将文件描述词转为文件指针) |
|
相关函数
| fopen,open,fclose |
|
表头文件
| #include<stdio.h> |
|
定义函数
| FILE * fdopen(int fildes,const char * mode); |
|
函数说明
| fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于mode 字符串格式请参考fopen()。 |
|
返回值
| 转换成功时返回指向该流的文件指针。失败则返回NULL,并把错误代码存在errno中。 |
|
范例
| #include<stdio.h> main() { FILE * fp =fdopen(0,”w+”); fprintf(fp,”%s/n”,”hello!”); fclose(fp); } |
|
执行
| hello! |
|
| feof(检查文件流是否读到了文件尾) |
|
相关函数
| fopen,fgetc,fgets,fread |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int feof(FILE * stream); |
|
函数说明
| feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。 |
|
返回值
| 返回非零值代表已到达文件尾。 |
|
| fflush(更新缓冲区) |
|
相关函数
| write,fopen,fclose,setbuf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int fflush(FILE* stream); |
|
函数说明
| fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream为NULL,fflush()会将所有打开的文件数据更新。 |
|
返回值
| 成功返回0,失败返回EOF,错误代码存于errno中。 |
|
错误代码
| EBADF 参数stream 指定的文件未被打开,或打开状态为只读。其它错误代码参考write()。 |
|
| fgetc(由文件中读取一个字符) |
|
相关函数
| open,fread,fscanf,getc |
|
表头文件
| include<stdio.h> |
|
定义函数
| nt fgetc(FILE * stream); |
|
函数说明
| fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。 |
|
返回值
| getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 |
|
范例
| #include<stdio.h> main() { FILE *fp; int c; fp=fopen(“exist”,”r”); while((c=fgetc(fp))!=EOF) printf(“%c”,c); fclose(fp); } |
|
| fgets(由文件中读取一字符串) |
|
相关函数
| open,fread,fscanf,getc |
|
表头文件
| include<stdio.h> |
|
定义函数
| har * fgets(char * s,int size,FILE * stream); |
|
函数说明
| fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 |
|
返回值
| gets()若成功则返回s指针,返回NULL则表示有错误发生。 |
|
范例
| #include<stdio.h> main() { char s[80]; fputs(fgets(s,80,stdin),stdout); } |
|
执行
| this is a test /*输入*/ this is a test /*输出*/ |
|
| fileno(返回文件流所使用的文件描述词) |
|
相关函数
| open,fopen |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int fileno(FILE * stream); |
|
函数说明
| fileno()用来取得参数stream指定的文件流所使用的文件描述词。 |
|
返回值
| 返回文件描述词。 |
|
范例
| #include<stdio.h> main() { FILE * fp; int fd; fp=fopen(“/etc/passwd”,”r”); fd=fileno(fp); printf(“fd=%d/n”,fd); fclose(fp); } |
|
执行
| fd=3 |
|
| fopen(打开文件) |
|
相关函数
| open,fclose |
|
表头文件
| #include<stdio.h> |
|
定义函数
| FILE * fopen(const char * path,const char * mode); |
|
函数说明
| 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串: r 打开只读文件,该文件必须存在。 r+ 打开可读写的文件,该文件必须存在。 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。 |
|
返回值
| 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。 |
|
附加说明
| 一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。 |
|
范例
| #include<stdio.h> main() { FILE * fp; fp=fopen(“noexist”,”a+”); if(fp= =NULL) return; fclose(fp); } |
|
| fputc(将一指定字符写入文件流中) |
|
相关函数
| fopen,fwrite,fscanf,putc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int fputc(int c,FILE * stream); |
|
函数说明
| fputc 会将参数c 转为unsigned char 后写入参数stream 指定的文件中。 |
|
返回值
| fputc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。 |
|
范例
| #include<stdio.h> main() { FILE * fp; char a[26]=”abcdefghijklmnopqrstuvwxyz”; int i; fp= fopen(“noexist”,”w”); for(i=0;i<26;i++) fputc(a[i],fp); fclose(fp); } |
|
| fputs(将一指定的字符串写入文件内) |
|
相关函数
| fopen,fwrite,fscanf,fputc,putc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int fputs(const char * s,FILE * stream); |
|
函数说明
| fputs()用来将参数s所指的字符串写入到参数stream所指的文件内。 |
|
返回值
| 若成功则返回写出的字符个数,返回EOF则表示有错误发生。 |
|
范例
| 请参考fgets()。 |
|
| fread(从文件流读取数据) |
|
相关函数
| fopen,fwrite,fseek,fscanf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream); |
|
函数说明
| fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。 |
|
返回值
| 返回实际读取到的nmemb数目。 |
|
附加说明
| |
|
范例
| #include<stdio.h> #define nmemb 3 struct test { char name[20]; int size; }s[nmemb]; main() { FILE * stream; int i; stream = fopen(“/tmp/fwrite”,”r”); fread(s,sizeof(struct test),nmemb,stream); fclose(stream); for(i=0;i<nmemb;i++) printf(“name[%d]=%-20s:size[%d]=%d/n”,i,s[i].name,i,s[i].size); } |
|
执行
| name[0]=Linux! size[0]=6 name[1]=FreeBSD! size[1]=8 name[2]=Windows2000 size[2]=11 |
|
| freopen(打开文件) |
|
相关函数
| fopen,fclose |
|
表头文件
| #include<stdio.h> |
|
定义函数
| FILE * freopen(const char * path,const char * mode,FILE * stream); |
|
函数说明
| 参数path字符串包含欲打开的文件路径及文件名,参数mode请参考fopen()说明。参数stream为已打开的文件指针。Freopen()会将原stream所打开的文件流关闭,然后打开参数path的文件。 |
|
返回值
| 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。 |
|
范例
| #include<stdio.h> main() { FILE * fp; fp=fopen(“/etc/passwd”,”r”); fp=freopen(“/etc/group”,”r”,fp); fclose(fp); } |
|
| fseek(移动文件流的读写位置) |
|
相关函数
| rewind,ftell,fgetpos,fsetpos,lseek |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int fseek(FILE * stream,long offset,int whence); |
|
函数说明
| fseek()用来移动文件流的读写位置。参数stream为已打开的文件指针,参数offset为根据参数whence来移动读写位置的位移数。 |
|
参数
| whence为下列其中一种: SEEK_SET从距文件开头offset位移量为新的读写位置。SEEK_CUR 以目前的读写位置往后增加offset个位移量。 SEEK_END将读写位置指向文件尾后再增加offset个位移量。 当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现。 下列是较特别的使用方式: 1) 欲将读写位置移动到文件开头时:fseek(FILE *stream,0,SEEK_SET); 2) 欲将读写位置移动到文件尾时:fseek(FILE *stream,0,0SEEK_END); |
|
返回值
| 当调用成功时则返回0,若有错误则返回-1,errno会存放错误代码。 |
|
附加说明
| fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置。 |
|
范例
| #include<stdio.h> main() { FILE * stream; long offset; fpos_t pos; stream=fopen(“/etc/passwd”,”r”); fseek(stream,5,SEEK_SET); printf(“offset=%d/n”,ftell(stream)); rewind(stream); fgetpos(stream,&pos); printf(“offset=%d/n”,pos); pos=10; fsetpos(stream,&pos); printf(“offset = %d/n”,ftell(stream)); fclose(stream); } |
|
执行
| offset = 5 offset =0 offset=10 |
|
| ftell(取得文件流的读取位置) |
|
相关函数
| fseek,rewind,fgetpos,fsetpos |
|
表头文件
| #include<stdio.h> |
|
定义函数
| long ftell(FILE * stream); |
|
函数说明
| ftell()用来取得文件流目前的读写位置。参数stream为已打开的文件指针。 |
|
返回值
| 当调用成功时则返回目前的读写位置,若有错误则返回-1,errno会存放错误代码。 |
|
错误代码
| EBADF 参数stream无效或可移动读写位置的文件流。 |
|
范例
| 参考fseek()。 |
|
| fwrite(将数据写至文件流) |
|
相关函数
| fopen,fread,fseek,fscanf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); |
|
函数说明
| fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。 |
|
返回值
| 返回实际写入的nmemb数目。 |
|
范例
| #include<stdio.h> #define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);} #define nmemb 3 struct test { char name[20]; int size; }s[nmemb]; main() { FILE * stream; set_s(0,”Linux!”); set_s(1,”FreeBSD!”); set_s(2,”Windows2000.”); stream=fopen(“/tmp/fwrite”,”w”); fwrite(s,sizeof(struct test),nmemb,stream); fclose(stream); } |
|
执行
| 参考fread()。 |
|
| getc(由文件中读取一个字符) |
|
相关函数
| read,fopen,fread,fgetc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int getc(FILE * stream); |
|
函数说明
| getc()用来从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。虽然getc()与fgetc()作用相同,但getc()为宏定义,非真正的函数调用。 |
|
返回值
| getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 |
|
范例
| 参考fgetc()。 |
|
| getchar(由标准输入设备内读进一字符) |
|
相关函数
| fopen,fread,fscanf,getc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int getchar(void); |
|
函数说明
| getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char转换成int后返回。 |
|
返回值
| getchar()会返回读取到的字符,若返回EOF则表示有错误发生。 |
|
附加说明
| getchar()非真正函数,而是getc(stdin)宏定义。 |
|
范例
| #include<stdio.h> main() { FILE * fp; int c,i; for(i=0li<5;i++) { c=getchar(); putchar(c); } } |
|
执行
| 1234 /*输入*/ 1234 /*输出*/ |
|
| gets(由标准输入设备内读进一字符串) |
|
相关函数
| fopen,fread,fscanf,fgets |
|
表头文件
| #include<stdio.h> |
|
定义函数
| char * gets(char *s); |
|
函数说明
| gets()用来从标准设备读入字符并存到参数s所指的内存空间,直到出现换行字符或读到文件尾为止,最后加上NULL作为字符串结束。 |
|
返回值
| gets()若成功则返回s指针,返回NULL则表示有错误发生。 |
|
附加说明
| 由于gets()无法知道字符串s的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓冲溢出的安全性问题。建议使用fgets()取代。 |
|
范例
| 参考fgets() |
|
| mktemp(产生唯一的临时文件名) |
|
相关函数
| tmpfile |
|
表头文件
| #include<stdlib.h> |
|
定义函数
| char * mktemp(char * template); |
|
函数说明
| mktemp()用来产生唯一的临时文件名。参数template所指的文件名称字符串中最后六个字符必须是XXXXXX。产生后的文件名会借字符串指针返回。 |
|
返回值
| 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。 |
|
附加说明
| 参数template所指的文件名称字符串必须声明为数组,如: char template[ ]=”template-XXXXXX”; 不可用char * template=”template-XXXXXX”; |
|
范例
| #include<stdlib.h> main() { char template[ ]=”template-XXXXXX”; mktemp(template); printf(“template=%s/n”,template); } |
|
| putc(将一指定字符写入文件中) |
|
相关函数
| fopen,fwrite,fscanf,fputc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int putc(int c,FILE * stream); |
|
函数说明
| putc()会将参数c转为unsigned char后写入参数stream指定的文件中。虽然putc()与fputc()作用相同,但putc()为宏定义,非真正的函数调用。 |
|
返回值
| putc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。 |
|
范例
| 参考fputc()。 |
|
| putchar(将指定的字符写到标准输出设备) |
|
相关函数
| fopen,fwrite,fscanf,fputc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int putchar (int c); |
|
函数说明
| putchar()用来将参数c字符写到标准输出设备。 |
|
返回值
| putchar()会返回输出成功的字符,即参数c。若返回EOF则代表输出失败。 |
|
附加说明
| putchar()非真正函数,而是putc(c,stdout)宏定义。 |
|
范例
| 参考getchar()。 |
|
| rewind(重设文件流的读写位置为文件开头) |
|
相关函数
| fseek,ftell,fgetpos,fsetpos |
|
表头文件
| #include<stdio.h> |
|
定义函数
| void rewind(FILE * stream); |
|
函数说明
| rewind()用来把文件流的读写位置移至文件开头。参数stream为已打开的文件指针。此函数相当于调用fseek(stream,0,SEEK_SET)。 |
|
返回值
| |
|
范例
| 参考fseek() |
|
| setbuf(设置文件流的缓冲区) |
|
相关函数
| setbuffer,setlinebuf,setvbuf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| void setbuf(FILE * stream,char * buf); |
|
函数说明
| 在打开文件流后,读取内容之前,调用setbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址。如果参数buf为NULL指针,则为无缓冲IO。Setbuf()相当于调用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ) |
|
返回值
| |
|
| setbuffer(设置文件流的缓冲区) |
|
相关函数
| setlinebuf,setbuf,setvbuf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| void setbuffer(FILE * stream,char * buf,size_t size); |
|
函数说明
| 在打开文件流后,读取内容之前,调用setbuffer()可用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小。 |
|
返回值
| |
|
| setlinebuf(设置文件流为线性缓冲区) |
|
相关函数
| setbuffer,setbuf,setvbuf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| void setlinebuf(FILE * stream); |
|
函数说明
| setlinebuf()用来设置文件流以换行为依据的无缓冲IO。相当于调用:setvbuf(stream,(char * )NULL,_IOLBF,0);请参考setvbuf()。 |
|
返回值
| |
|
| setvbuf(设置文件流的缓冲区) |
|
相关函数
| setbuffer,setlinebuf,setbuf |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int setvbuf(FILE * stream,char * buf,int mode,size_t size); |
|
函数说明
| 在打开文件流后,读取内容之前,调用setvbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小,参数mode有下列几种 _IONBF 无缓冲IO _IOLBF 以换行为依据的无缓冲IO _IOFBF 完全无缓冲IO。如果参数buf为NULL指针,则为无缓冲IO。 |
|
返回值
| |
|
| ungetc(将指定字符写回文件流中) |
|
相关函数
| fputc,getchar,getc |
|
表头文件
| #include<stdio.h> |
|
定义函数
| int ungetc(int c,FILE * stream); |
|
函数说明
| ungetc()将参数c字符写回参数stream所指定的文件流。这个写回的字符会由下一个读取文件流的函数取得。 |
|
返回值
| 成功则返回c 字符,若有错误则返回EOF。 |
|
|
相关推荐
Linux C文件操作函数参考指南
htmltable {th, td {th {pre {简介:本文详细探讨了Linux系统中C语言进行文件操作时使用的各种函数,涵盖了从文件打开、读写、位置控制到文件权限管理的各个方面。通过实例讲解了fopen()fclose()fread()fwrite()fgets()fscanf()fprintf()fputs()fseek()ftell()rewind()feof()ferror()chmod()access()remove()
Linux C 函数参考(文件内容操作)
learerr(清除文件流的错误旗标) 相关函数 feof 表头文件
Pyside6+qml+Qtcreator项目实战
PYTHON and QT QUICK - Custom Buttons With QML And JavaScript - [MODERN GUI]-#01
C/C++文件IO函数
文件(file)通常是在磁盘或固态硬盘上的一段已命名的存储区。C中采用的主要是文件指针的办法,C++中对文件的操作主要运用了“文件流”(即非标准的输入输出)的思想。 一、C C把文件看作是一系列连续的字节,每个字节都能被单独读取。C提供两种文件模式:文本模式和二进制模式。 1.fopen函数 std::FILE* fopen( const char* filename, const char* mode ); 打开文件filename并返回与该文件关联的文件流。mode用于确定文件访问模式。
FreeRTOS笔记(十五)FreeRTOS总结
文章目录01 - 裸机和FreeRTOS区别1.1 - 裸机1.2 - FreeRTOS1.3 - 区别02 - 对FreeRTOS的感受03 - 推荐 上一文链接:FreeRTOS笔记(十四)[简] 软件定时器、事件组、任务通知 01 - 裸机和FreeRTOS区别 学完FreeRTOS,应该要自己总结一下FreeRTOS和裸机的区别,宏观上说,FreeRTOS是一个运行在裸机上的微内核,...
LTX-2.3 V1.6:8G显存本地AI视频生成工具与int8量化加速实践
这次我们来看一个本地部署的AI视频生成工具——LTX-2.3文字图片生成带音频视频工具V1.6版本。这个工具最大的特点是支持int8量化加速,相比原版提速2-4倍,效果更好,而且8G显存就能运行,不需要搭建复杂环境,解压即可使用。 对于想要在本地电脑上快速生成带音频视频内容的用户来说,这个工具解决了几个关键痛点:首先是硬件门槛低,8G显存意味着大多数主流游戏显卡都能胜任;其次是部署简单,避免了Python环境配置、依赖包冲突等常见问题;最后是性能优化明显,int8加速让生成速度大幅提升。 本文会重点演示如何
根据linux内核源码查找recv返回EBADF(errno 9)的原因
linux的内核版本是2.6.18,x86_64. man里的解释是: EBADF The argument s is an invalid descriptor 我的模拟测试环境是: 前端loadrunner模拟web点击,通过后端的weblogic压自己的服务的时候发现,有时候recv会收到这个错误,意思就是
量化风控核心:信用评分卡模型的设计与迭代全流程
◦ 动态策略适配:根据评分卡结果动态调整风控流程——高分用户(>750分)秒级放款,中低分用户(600-700分)触发补充资料提交,低分用户(<600分)直接拒绝。◦ 特征有效性监控:每月计算特征IV值,对IV<0.1的低效特征(如“用户星座”)进行淘汰,同时引入新特征(如电商消费数据)。某城商行通过增量学习,评分卡PSI值长期稳定在0.1以下。◦ 数据筛选:整合征信数据(逾期记录、查询次数)、行为数据(消费频次、还款习惯),某银行评分卡纳入150+维度特征,覆盖用户偿债能力、意愿、稳定性等维度;
C函数 mktemp
最近写程序的时候需要临时文件,于是开始查怎样生成一个临时文件,但是,需要注意,这个临时文件必须是唯一的,不能与其他已经存在的文件有冲突,所以,大部分的函数都会失效,不过,mktemp 函数可以做到这一点,首先,我们来看一看这个函数的原型: char * mktemp(char *template); 我们需要注意,template 代表的是传入的文件名,这个文件名必须以 XXX
Moveit Servo学习
MoveIt Servo功能与配置指南 摘要:本文介绍了MoveIt Servo的功能特性,包括支持关节速度、末端执行器速度和位置控制,以及安全功能如奇点检查、碰撞检测等。通过示例展示了如何运行伺服控制demo,详细解析了关键节点和话题。最后以睿尔曼rml_63机器人为例,讲解了如何自定义伺服配置文件,包括环境设置、输入输出参数配置、平滑滤波器和规划场景监控等关键配置项。文章提供了从基础使用到自定义机器人配置的完整指导,帮助开发者实现高效的实时运动控制。
汇丰外包Java岗面试复盘:Zoom面1.5小时,从英语、粤语到现场敲代码的极限挑战
本文详细记录了汇丰银行外包Java岗位的面试全过程,包括多语言切换(英语、粤语)的技术沟通挑战和现场编码测试的实战经验。从高并发编程到JVM调优,面试不仅考察技术深度,更注重实战问题解决能力。文章分享了应对跨国银行技术面试的实用策略,帮助Java开发者在跨文化环境中提升竞争力。
文件操作函数全集 Linux C(流式 I/O)
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags;
【OpenClaw企业级智能体实战】第32篇:政企版OpenClaw安全落地指南——奇安信55页报告深度拆解与实战
2026年Q2,OpenClaw(俗称“龙虾”)安全风险集中爆发,公安部、工信部等监管机构密集发声,23万公网暴露实例、155个高危漏洞让企业“养虾”安全压力骤增。奇安信发布的55页《政企版龙虾安全使用指南》,以“看得清、管得住、用得好”为核心,构建了“端-网-云”三层防护体系。本文深度拆解这份报告的九大安全面与三大趋势,全景扫描奇安信、腾讯、360等头部厂商安全方案,提炼企业最低安全基线与实操配置,通过金融机构虚拟案例演示落地全流程,提供从资产摸底、规范制定到工具部署的完整解决方案。
【Linux文件操作】C库函数操作
在 Linux 系统编程领域,文件操作是开发者必须掌握的核心技能。C 语言标准库提供了一套完善的文件操作函数,这些函数在底层系统调用的基础上进行了封装,既简化了编程复杂度,又保证了良好的跨平台兼容性。本文将系统讲解 Linux 环境下使用 C 库函数进行文件操作的全流程,涵盖文件的创建、打开、读写和关闭等关键环节。
移动机器人路径规划中噪声环境下的鲁棒性测试仿真
设计一个二维或三维环境模型,包括静态障碍物和可能存在的动态障碍物。
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
Linux-C 文件操作
Linux-C 文件操作 一、简述 记--Linux环境下C语言编程的文件操作。 两种操作文件的方式: 1、系统I/O:系统调用接口,open(), read(), write(), lseek(), close()。是操作系统直接提供的编程接口(API)。 2、标准/IO:标准库的I/O函数,fopen(), frea...
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
【Linux基础IO】Linux文件操作:系统调用与库函数
在计算机体系中,文件操作是不可或缺的一部分,随着我们不断的深入学习,我们对文件使用的需求会越来越高,在操作系统层面,文件的操作往往是通过系统调用接口来完成的,要想更深入的学习,我们必须熟练掌握文件操作。本篇我们会以:C语言中的文件I/O操作------>系统调用接口-------->C语言文件操作和系统调用接口的关系-------->文件描述符及进程与文件的关系,来给大家展开介绍。
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
linux环境:C编程文件操作
linux环境:C编程文件操作C语言标准函数库文件操作函数Linux目录操作基于文件描述符的Linux文件操作基本文件操作-打开、关闭与读写MMAP文件映射 C语言标准函数库文件操作函数 打开文件:foen(文件名,打开格式) 关闭文件:fclose(文件名) 无格式读文件:fread(目标地址,读取单位大小,读取个数,源文件指针) 无格式写文件:fwrite(源地址,读取单位大小,读取个数,目...
LINUX下文件操作函数
Linux的文件操作API涉及到创建、打开、读写和关闭文件。1.linux API 创建int creat(const char *filename, mode_t mode); 参数mode指定新建文件的存取权限,它同umask一起决定文件的最终权限(mode&umask),其中umask代表了文件在创建时需要去掉的
linux C —— 文件操作函数
chmodint chmod(const char *path, mode_t mode) 将文件read的文件权限变成所有者有读写权限,其他用户只有读的权限。这和shell指令中的chmod有相同的功效。#include <stdio.h> #include <stdlib.h> #include <sys/stat.h> /* for chmod */ #include <sys/types.
Linux C/C++编程之(十四)文件操作相关函数
文章目录一、概述二、相关函数1. stat 一、概述 st_mode简单介绍 st_mode详细介绍 二、相关函数 1. stat 作用:获得文件信息,也可以获取文件大小。 头文件: 参数说明: path 文件名 buf 传出参数,定义结构体 struct stat sb; &sb 返回值 失败:返回 -1,设置 errno 成功:返回 0 注意: stat 碰到链接,会追溯到源文件,穿透!!!lstat 并不会穿透。 stat结构体: linux 命令 stat 执行
Linux C文件操作函数
功能:格式化从文件中读取内容参数:: 文件指针: 格式控制字符串(如 ): 用于存放读取的变量地址返回值:成功:返回读取的项数匹配失败:返回 0出错/结束:返回 功能:将字符串写入文件参数:: 要写入的字符串: 文件指针返回值:成功:返回非负值失败:返回 功能:写入一个字符到文件参数:: 写入的字符(作为 ASCII 值): 文件指针返回值:成功:返回写入的字符失败:返回 功能:格式化输出到文件参数:: 文件指针: 格式化字符串(如 ): 参数列表返回值:成功:写入字符数(不含终止符)失败
Linux C文件操作
使用fgetc或者fputc的时候,它底层的调用还是调用了read和write,但是在读取的时候做了一个系统的优化,也就是一次性读取了多个字节的内容,表面上看起来只读取一个字符,实际上底层中读取的是多个字节的字符。文件的属性信息与文件的实体不是存在在一个位置上的,把文件的属性信息存放在一个位置,这一类的文件叫做目录文件,也就是windows上的文件夹。表示从指定的文件中读下一个字符,返回一个没有符号的字符,或者EOF(end of file),需要读的文件必须是读或者读写的方式打开的,并且文件存在。
C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向
为什么我们可以把文件创建在进程当前路径中,当前路径到底是什么意思?我们在运行可执行程序后程序变成了进程,而进程在我们之前的学习中,我们知道进程有进程的pcb结构体,这个结构体中存放了进程的各种信息,那么我们运行进程时所在的路径也会被记录下来,这个路径就是当前进程所在的路径,也就是当前路径的根本意义;下面我们通过实际现象来证明我们思路:由此我们可以清楚的明白所谓的当前路径就是存储在进程的pcb结构体中的进程信息,我们只要通过查找进程的结构体就可以找到我们的当前路径;
【Linux】应用编程之C语言文件操作
Linux进阶编程之文件操作前言一、工程的创建1、目录结构2、Makefile二、文件的操作1.打开、关闭文件:open、close2.读取、写入文件:read、write3.综合练习三、文件夹的操作1.2.3.最后 前言 对于文件IO来说,一切都是围绕文件描述符来进行的,在Linux系统中所有打开的文件都是一个对应的文件描述符。 文件描述符的本质是一个非负整数,当我们打开一个文件时,系统会给我们分配一个文件描述符。 当我们对一个文件做读写操作的时候,我们使用open函数的时候返回的就是这个文
文件操作函数总结(Linux)
新建一个名为test.txt的文本文件,向文件内输入"This is test.\n"(""内是输入的内容)运行结果为:ABCDEFGHIJKLMNOPQRSTUVWXYZ,其对应的ASCII码值为65-90。也可以采用先关闭再打开文件的方式,但是需要注意文件打开方式:我这里为了省事直接用的a+修改如下:fseek(fp,0,SEEK_SET);示例代码: 打印26个大写字母到1.txt文本。这样始终打印的都是test.c的大小。使用fprintf和sprintf。示例一: 每次只能获取一个字符。
879



被折叠的 条评论
为什么被折叠?



