对酒店网站建设的意见,无锡个人网站制作,合肥企业网站建设公司哪家好,wordpress 缩略图 oss1.标准I/O的基本概念 标准输入#xff08;stdin#xff09;#xff1a;默认是指键盘输入。 标准输出#xff08;stdout#xff09;#xff1a;默认是指显示器输出。 标准错误#xff08;stderr#xff09;#xff1a;用于输出错误信息#xff0c;也是指向显示器…1.标准I/O的基本概念 标准输入stdin默认是指键盘输入。 标准输出stdout默认是指显示器输出。 标准错误stderr用于输出错误信息也是指向显示器但与stdout不同stderr通常是无缓冲的以确保错误信息能立即显示。
2.标准I/O函数
标准I/O库提供了一系列函数来打开、读写和关闭文件。这些函数包括 打开文件FILE *fopen(const char *path, const char *mode); 关闭文件int fclose(FILE *stream); 字符读写int fgetc(FILE *stream); int fputc(int char, FILE *stream); 行读写char *fgets(char *str, int n, FILE *stream); int fputs(const char *str, FILE *stream); 块读写size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 3.缓冲机制
标准I/O库使用缓冲机制来提高效率。缓冲分为三种类型 全缓冲对于文件操作通常使用全缓冲。当缓冲区满、文件关闭或显式调用fflush时缓
冲区内容才会被写入文件。 行缓冲对于标准输出stdout和某些特殊文件如终端使用行缓冲。当遇到换行符、
缓冲区满、文件关闭或显式调用fflush时缓冲区内容会被刷新。 无缓冲标准错误stderr通常是无缓冲的以确保错误信息能立即显示。
4.文件操作的步骤 打开文件使用fopen函数打开文件并返回一个FILE指针。 读写文件使用标准I/O库提供的函数进行读写操作。 关闭文件使用fclose函数关闭文件并释放相关资源
5.文件打开模式 r只读模式。文件必须存在否则报错。 r读写模式。文件必须存在否则报错。 w只写模式。文件不存在则创建存在则清空内容。 w写读模式。文件不存在则创建存在则清空内容。 a追加模式。文件不存在则创建存在则在文件末尾追加。 a追加读写模式。文件不存在则创建存在则在文件末尾追加同时允许读取。
6.示例
while(1)
{ fputc(fgetc(stdin), stdout);
} 使用EOF宏判断但需注意EOF在C语言中通常定义为-1但实际读取时不会直接返回-1而
是到达文件末尾时返回EOF。
#includestdio.hint main(void)
{FILE* src fopen(1.txt,r);FILE* dst fopen(2.txt,w);if(NULL src||NULL dst){printf(error1!);return 1;}while(1){int c fgetc(src);if(EOF c){break;}fputc(c,dst);}fclose(src);fclose(dst);return 0;
}
#includestdio.h
#includestring.h
int main(int argc,char *argv[])
{if(argc3){printf(error1!\n);return 1; }FILE* src fopen(argv[1],r);FILE* dst fopen(argv[2],w);if(NULL src){printf(error1!\n);return 1;}char buf[4096] {0};while(1){memset(buf,0,sizeof(buf));if(fgets(buf,sizeof(buf),src)){int a fputs(buf,dst);if(a EOF){printf(error2!\n);return 1;}}else{break;}}fclose(src);fclose(dst);return 0;
} #includestdio.h
#includestring.h
#includestdlib.h
int main(int argc,char *argv[])
{if(argc3){printf(error!\n);return 1; }FILE* src fopen(argv[1],r);FILE* dst fopen(argv[2],w);if(NULL src||dst NULL){printf(error1!\n);return 1;}char buf[2] {0};while(1){bzero(buf,sizeof(buf));if(fread(buf,sizeof(buf),1,src)){int a fwrite(buf,sizeof(buf),1,dst);if(a EOF){printf(error2!\n);return 1;}}else{break;}}fclose(src);fclose(dst);return 0;
}