C语言有关文件读写

C语言有关文件读写,第1张

#include <stdlibh>

#include <stdioh>

FILE fout, fin;

typedef struct ss {

char c[2];

int x;

int y;

} st;

void main()

{

st a[4],x[3];

int i,j,k;

fout = fopen("atxt","w");

fprintf(fout,"A 4 1110 \n");

fprintf(fout,"B 2 1101 \n");

fprintf(fout,"C 1 1011 \n");

fprintf(fout,"D 5 1111 \n");

fclose(fout);

fout = fopen("xtxt","w");

fprintf(fout,"X 3 1011 \n");

fprintf(fout,"Y 1 0100 \n");

fprintf(fout,"Z 2 1100 \n");

fclose(fout);

fin= fopen("atxt","r");

for (i=0;i<4;i++) fscanf(fin,"%s %d %d",&a[i]c,&a[i]x,&a[i]y);

fclose(fin);

fin= fopen("xtxt","r");

for (i=0;i<3;i++) fscanf(fin,"%s %d %d",&x[i]c,&x[i]x,&x[i]y);

fclose(fin);

// 以下可以比较了

printf("%s %d %d\n", a[0]c,a[0]x, a[0]y);

printf("%s %d %d\n", x[0]c,x[0]x, x[0]y);

printf("%s %d %d\n", a[1]c,a[1]x, a[1]y);

printf("%s %d %d\n", x[1]c,x[1]x, x[1]y);

}

C语言标准库提供了一系列文件I/O函数用于文件 *** 作,比如fopen()用于打开文件、fread()、fwrite()用于读写文件、fseek()用于设置 *** 作位置等等,一般C语言教程上都有文件I/O一章,细致内容,可以找本教科书学习一下。 下面的示例,是向名为1txt的文件附加hello world字符串。

#include <stdioh>

#include <stringh>

int main()

{

FILE fp = fopen("1txt", "a+");

if (fp==0) { printf("can't open file\n"); return 0;}

fseek(fp, 0, SEEK_END);

char sz_add[] = "hello world\n";

fwrite(sz_add, strlen(sz_add), 1, fp);

fclose(fp);

return 0;

}

使用fopen的r方式可以实现读取,用w+方式可以实现写入。

1fopen的函数原型:FILE

fopen(const

char

path,const

char

mode);

fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:

r

以只读方式打开文件,该文件必须存在。

r+

以可读写方式打开文件,该文件必须存在。

rb+

读写打开一个二进制文件,允许读数据。

rw+

读写打开一个文本文件,允许读和写。

w

打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+

打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a

以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

a+

以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

(原来的EOF符不保留)

wb

只写打开或新建一个二进制文件;只允许写数据。

wb+

读写打开或建立一个二进制文件,允许读和写。

wt+

读写打开或着建立一个文本文件;允许读写。

at+

读写打开一个文本文件,允许读或在文本末追加数据。

ab+

读写打开一个二进制文件,允许读或在文件末追加数据。

上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b

字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

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

2例程:

#include<stdioh>

#define F_PATH "d:\\myfile\\filedat"

char c;

int main(){

FILEfp=NULL;//需要注意

fp=fopen(F_PATH,"w"); //创建文件

if(NULL==fp) return -1;//要返回错误代码

while(scanf("%c",&c)!=EOF) fprintf(fp,"%c",c); //从控制台中读入并在文本输出

fclose(fp);

fp=NULL;//需要指向空,否则会指向原打开文件地址

return 0;

}

楼下这个人真的装,不会就算了还在这水,你还是去打斗地主吧!

这个题简单,用fgetc函数直接进行循环写入就行了,话说贴主是湖工大的吧?这是实训题,你还是自己打一下吧,下面是参考答案:

#include<stdlibh>

#include<stdioh>

void solve(){

FILE fp1,fp2;

fp1=fopen("atxt","r");

fp2=fopen("btxt","w");

char c;

c=fgetc(fp1);

while(c!=EOF)

{

fputc(c,fp2);

c=fgetc(fp1);

}

fclose(fp1);

fclose(fp2);

}

读写文件

需要使用文件 *** 作函数。

建议百度C语言文件读写,系统学习一下。

这个是一门很大很复杂的模块。

基础的。

打开文件 用fopen, 区分读写,有各种模式。

读文件, 用fread, fgetc, fgets, fscanf等。

写文件, 用fwrite, fputc,fputs, fprintf等。

关闭文件, fclose

文件指针变换,fseek, rewind等。

文件状态判断, ftell, feof等。

通过一个简单的示例进行讲解(此示例用文本文件进行演示):

#include <stdioh>

#include <stdlibh>

#include <errnoh>

#define FILE_NAME "demotxt" // 文件名称

int main()

{

FILE fp = NULL; // 文件指针

char szAppendStr = "Text";

errno_t eResult;

// 以附加方式打开可读/写的文件, 如果没有此文件则会进行创建,然后以附加方式打开可读/写的文件

eResult = fopen_s(&fp, FILE_NAME, "a+");

// 打开文件失败

if (eResult != 0)

exit(-1);

// 将追加内容写入文件指针当前的位置

fputs(szAppendStr, fp);

// 最后不要忘了,关闭打开的文件~~~

fclose(fp);

return 0;

}

扩展资料

文件的打开和关闭

open()函数的作用是打开文件,其调用格式为: int open(char filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接。修饰符可以有多个, 但基本模式只能有一个。

open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。

回车和换行符转换成一个换行符

--

书本用的是老概念。

键盘输入,我们按Enter键,C/C++语言收到的就是'\n'

(新行符)。

打字机老概念:回车和换行,回车就是回到本行开始位置,换行就是到下一行。回车符

'\r'

,换行符'\n'

,

老码

CRLF。

“从键盘输入4个学生的数据是ASCII码,也就是文本文件”,把“也就是文本文件”删去。键盘输入是输入流,不叫文件。

“r”方式读入

--

fopen(文件名,"r")

--

"r"

方式

打开,是作为

文本文件打开,用于读。而不是用

二进制方式。

文件

wb

方式

打开和写成的,

必须用

rb

方式

打开和

读入

b

用于

二进制文件。不

b

用于

文本文件(ASCII文件)

第一种:

#include <stdioh>

#include <stringh>

#include <stdlibh>

struct student   //结构体

{

 char name[20];  //姓名

 int english; //英语

 int math; //数学 

 int program;  //程序设计

}s[50];

void daoru(struct student s[], int n) //文件导入函数

{

 FILE p;

 int i=n;

 if((p=fopen("studentstxt", "r"))==NULL)

 {

  printf("无法打开此文件!");

 }

 else

 {

  while(!feof(p))

  {

   fscanf(p, "%s%d%d%d", s[i]name, &s[i]english, &s[i]math, &s[i]program);

   i++;

   n=n+1;

  }

 }

 fclose(p);

}

void paixu(struct student s[], int n) //排序函数

{

 int i, j;

 struct student stu;

 int allscore[2];

 for (i=0; i<n-1; i++)

 {

  for (j=i+1; j<n; j++)

  {

   allscore[0]=s[i]english+s[i]math+s[i]program;

   allscore[1]=s[j]english+s[j]math+s[j]program;

   if (allscore[0]<allscore[1])

   {

    stu=s[i];

    s[i]=s[j];

    s[j]=stu;

   }

  }

 }

}

void dayin(struct student s[], int n)  //显示所有信息

{

 int i;

 printf("\n姓名\t英语\t数学\t程序设计\t总分\n");

 for (i=0; i<n; i++)

 {

  printf("%s\t%d\t%d\t%d\t\t%d\n",s[i]name, s[i]english, s[i]math, s[i]program, (s[i]english+s[i]math+s[i]program));

 }

}

int main()  //主函数

{

 int k, n=0;

 daoru(s, &n);

 paixu(s, n);

 dayin(s, n);

 return 0;

}

输出结果:

第二种二进制的导入也差不多,这里就不写了

以上就是关于C语言有关文件读写全部的内容,包括:C语言有关文件读写、c语言文件读写 实例、C语言如何实现对txt文件的读取和写入等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10122464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存