龙空技术网

如何快速入门C语言文件操作—小编为您一一道来

怀念感觉12 817

前言:

此时你们对“c语言fputc”可能比较关怀,看官们都想要了解一些“c语言fputc”的相关知识。那么小编在网络上汇集了一些对于“c语言fputc””的相关资讯,希望看官们能喜欢,小伙伴们一起来了解一下吧!

C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:

文件的打开操作: fopen 打开一个文件

文件的关闭操作 : fclose 关闭一个文件

文件的读写操作 : fgetc 从文件中读取一个字符

fputc 写一个字符到文件中去

fgets 从文件中读取一个字符串

fputs 写一个字符串到文件中去

fprintf 往文件中写格式化数据

fscanf 格式化读取文件中数据

fread 以二进制形式读取文件中的数据

fwrite 以二进制形式写数据到文件中去

getw 以二进制形式读取一个整数

putw 以二进制形式存贮一个整数

文件状态检查函数 feof 文件结束:

ferror 文件读/写出错

clearerr 清除文件错误标志

ftell 了解文件指针的当前位置

文件定位函数 rewind 反绕:

fseek 随机定位

下面详细讲解一下各个函数的用法:

1、fopen、fclose

fopen

函数原型: FILE * fopen(const char * path, const char * mode)

参数path字符串包含将要打开的文件路径及文件名,参数mode字符串则代表着流形态。

文件顺利打开后,指向该流的 文件指针 就会被返回。如果文件打开失败则返回NULL,并把错误代码放在error中。

mode有下列几种形态字符串:

上述的形态字符串都可以再加一个 b 字符,如 rb、w+b 或 ab+ 等组合,加入 b 字符用来告诉函数库以二进制模式打开文件。如果不加 b,表示默认加了 t,即 rt、wt,其中 t 表示以 文本模式 打开文件。

fclose

函数原型:int fclose( FILE *fp )

如果流成功关闭,fclose 返回 0,否则返回EOF(-1)

可以在fclose(fp)后使用

来判断是否成功关闭文件,关闭失败,则fclose返回1并输出错误原因

函数应用实例:

现在我们来看一个简单的实例例子:

#include <stdio.h>

int main(){

int a;

int c=111;

int b;

char ch;

char buf[255];

char buff[255];

FILE *p;

//文件写入

p=fopen("test.txt","a");

// fputc('\n',p); //将字符写入到p指向的输入流

// fprintf(p,"this is point!\n"); //将字符串写入缓冲区

// fputs("this is fputs...\n",p); //将字符串写入到p指向的输入流,成功返回非负值,失败返回EOF

c=fclose(p); //将缓冲区数据写入文件,并关闭文件文件释放缓冲区

//文件读取

p=fopen("test.txt","r");

//方法一

// while((ch=fgetc(p))!=EOF){

// fputc(ch,stdout); //将ch表示的字符送到标准输出流中去

// }

//方法二

fscanf(p,"%s",buf); //读取p输入流,并复制到buf,遇到空格或换行结束

printf("fscanf:%s\n",buf);

//移动文件指针

// int len;

// len=ftell(p); //获得文件指针偏移量

// rewind(p); //移动文件指针到文件头

// fseek(p,2L,0); //移动文件指针(文件指针,偏移量长整型有正负值,0表示文件头1表示当前位置2表示文件尾)

// printf("%d",len);

//方法三

fgets(buff,5,p); //从p指向的输入流中获取n-1个字符,遇到换行符就停止读取,将读取的字符串复制到缓冲区buff包括换行符

int i=0;

printf("buff:%s\n",buff);

// printf("buff:");

// while(*(buff+i)!='\0'){ //*(buff+i)==buff[i],编译器自动给字符数组末尾加上'\0'结束符

// printf("%c",buff[i]);

// i++;

// }

c=fclose(p);

fputs("fputs:ok\n",stdout);

fprintf(stdout,"fprintf:no\n");

printf("a=%d\n",a);

printf("b=%d\n",b);

printf("c=%d\n",c);

return 0;

}

fgetc

函数原型: int fgetc(FILE *fp)

从文件指针fp指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。这个函数的返回值,是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。

注意到虽然是返回一个字节,但是返回值类型为int而不知unsigned char,因为EOF为-1,返回值要能够表示-1。

fputc

函数原型:int fputc (int c, FILE *fp)

c是一个整型变量,是内存要写到文件中的字符(C语言中整型量和字符量可以通用)

在正常调用情况下,函数返回写入文件的字符的ASC||码值,出错时,返回EOF。当正确写入一个字符或一个字节的数据后,文件内部写指针会自动后移一个字节的位置。

函数应用实例:将一个文件中的大写字母转为小写字母,小写字母转为大写字母后保存到另一个文件中

#include<stdio.h> int main() { char ch; FILE *fp1,*fp2; fp1 = fopen("a.txt","r"); if(fp1 == NULL) return -1; fp2 = fopen("b.txt","w"); if(fp2 == NULL) return -1; ch = fgetc(fp1); while(ch != EOF) { if(ch >= 'a' && ch <= 'z') ch -= 32; else if(ch >= 'A' && ch <= 'Z') ch += 32; fputc(ch,fp2); ch = fgetc(fp1); } fclose(fp1); fp1 = NULL; fclose(fp2); fp2 = NULL; return 0; }

3、fgets、fputs

函数应用实例:测试fgets

#include<stdio.h> int main(int argc,char **argv) { FILE *fp1; char str[256]; fp1 = fopen("a.txt","r");//a.txt中的内容是ABCabc123 if(fp1 == NULL) return -1; if(fgets(str,4,fp1) == NULL)//这里调用fgets一次,读取出3个字符 printf("失败"); else printf("%s\n",str); if(fgets(str,7,fp1) == NULL)//这里第二次调用fgets,读取出剩下的6个字符 { printf("失败"); } else printf("%s\n",str); if(fgets(str,2,fp1) == NULL)//由于文件已经读取完毕,因此返回NULL printf("失败"); else printf("%s",str); return 0; }

函数应用实例:将一个文件中的内容复制到另一个文件

#include<stdio.h> int main(int argc,char **argv) { FILE *fp1,*fp2; char str[256]; fp1 = fopen("a.txt","r");//a.txt中的内容是ABCabc123 fp2 = fopen("b.txt","w");//b.txt为空 if(fp1 == NULL) return -1; if(fp2 == NULL) return -1; if(fgets(str,4,fp1) == NULL)//这里调用fgets一次,读取出3个字符 printf("失败"); else fputs(str,fp2); if(fgets(str,7,fp1) == NULL)//这里第二次调用fgets,读取出剩下的6个字符 printf("失败"); else fputs(str,fp2); if(fgets(str,2,fp1) == NULL)//由于文件已经读取完毕,因此返回NULL printf("失败"); else fputs(str,fp2); return 0; }

结束语

好了,今天的知识就分享到这里,欢迎关注“怀念感觉12”,私信关键词:学习资料,获取更多学习资源,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习c/c++的文章。同时欢迎在下面评论区留言如何学习c/c++。

标签: #c语言fputc #c语言从屏幕上获取字符 #c语言 eof用法 #c语言fputc函数返回值 #c语言中charch是什么意思