赞
踩
标准输入(stdin):默认是指键盘输入。
标准输出(stdout):默认是指显示器输出。
标准错误(stderr):用于输出错误信息,也是指向显示器,但与stdout不同,stderr通常是无缓冲的,以确保错误信息能立即显示。
标准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);
标准I/O库使用缓冲机制来提高效率。缓冲分为三种类型:
全缓冲:对于文件操作,通常使用全缓冲。当缓冲区满、文件关闭或显式调用fflush
时,缓
冲区内容才会被写入文件。
行缓冲:对于标准输出(stdout)和某些特殊文件(如终端),使用行缓冲。当遇到换行符、
缓冲区满、文件关闭或显式调用fflush
时,缓冲区内容会被刷新。
无缓冲:标准错误(stderr)通常是无缓冲的,以确保错误信息能立即显示。
打开文件:使用fopen
函数打开文件,并返回一个FILE
指针。
读写文件:使用标准I/O库提供的函数进行读写操作。
关闭文件:使用fclose
函数关闭文件,并释放相关资源
r:只读模式。文件必须存在,否则报错。
r+:读写模式。文件必须存在,否则报错。
w:只写模式。文件不存在则创建,存在则清空内容。
w+:写读模式。文件不存在则创建,存在则清空内容。
a:追加模式。文件不存在则创建,存在则在文件末尾追加。
a+:追加读写模式。文件不存在则创建,存在则在文件末尾追加,同时允许读取。
- while(1)
- {
- fputc(fgetc(stdin), stdout);
- }
使用EOF宏判断,但需注意EOF在C语言中通常定义为-1,但实际读取时不会直接返回-1,而
是到达文件末尾时返回EOF。
- #include<stdio.h>
-
- int 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;
- }
- #include<stdio.h>
- #include<string.h>
- int main(int argc,char *argv[])
- {
- if(argc<3)
- {
- 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;
- }
-
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- int main(int argc,char *argv[])
- {
- if(argc<3)
- {
- 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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。