当前位置:首页 » 编程语言 » c语言先读后写咋整
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言先读后写咋整

发布时间: 2022-09-18 21:08:32

c语言中对文件进行读写操作必须先将文件怎么办

要先声明一个文件指针,然后利用fopen函数打开文件,该函数打开文件成功会返回一个指向该流的文件指针,然后通过文件指针对文件进行操作,最后在通过fclose函数来关闭流并释放文件指针。

fopen函数原型:FILE * fopen(const char * path,const char * mode);
第一个参数是路径,第二个参数是打开文件的方式,有以下几种:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

fclose函数用法:int fclose(FILE *stream);
参数为指向与关闭文件的文件指针。

例如:
#include <stdio.h>
#include <stdlib.h> //为了使用exit()
int main()
{
char ch;
FILE* fp;
char fname[50]; //用于存放文件名
printf("输入文件名:");
scanf("%s",fname);
fp=fopen(fname,"r"); //只供读取
if(fp==NULL) //如果失败了
{
printf("错误!");
exit(1); //中止程序
}
//getc()用于在打开文件中获取一个字符
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp); //关闭文件
return 0;
}

⑵ C语言 用r+打开文件 如何在读操作后面紧跟写操作

以r+打开文件的话,只读如果文件不存在创建该文件。要想写和读的话就只好以"ab+"打开文件了。

⑶ 如何用c语言实现文件先写入部分数据,然后再读取输出在屏幕上

  • 文件先写入部分数据,然后再读取输出在屏幕上,所以,在打开文件时必须以可读写方式"+"打开文件。(r+ w+ a+均可)

  • 写完后,再读。因此,要把文件指针前移才可以,否则当前位置处在已写完的数据位置,无法读到数据。
    参考代码:

#include<stdio.h>
intmain()
{
FILE*fp;
charread[1000];
char*p="hello";
chars=' ';

if((fp=fopen("data.txt","a+"))==NULL)//追加方式,可读可写
{
printf(" Openfileerror!pressanykeyexit!");
return-1;
}

fputs(p,fp);//写一个串hello
fputc(s,fp);//写一个回车符
fputs(p,fp);//再写一个串hello

fseek(fp,-5,SEEK_CUR);//从当前位置,向前移动5个字节文件指针
fgets(read,1000,fp);//读取数据
printf("%s",read);//得到hello

fclose(fp);
return0;
}

⑷ c语言怎么同时读写一个文件

FILE *fp;
fp = fopen("c:\\temp\\test.txt", "r+") //由于反斜杠\是控制字符,所以必须再加一个反斜杠

打开文本文件:

"r":只能从文件中读数据,该文件必须先存在,否则打开失败
"w":只能向文件写数据,若指定的文件不存在则创建它,如果存在则先删除它再重建一个新文件
"a":向文件增加新数据(不删除原有数据),若文件不存在则打开失败,打开时位置指针移到文件末尾
"r+":可读/写数据,该文件必须先存在,否则打开失败
"w+":可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
"a+":可读/写数据,原来的文件不被删去,位置指针移到文件末尾

打开二进制文件的模式与打开文本文件的含义是一样的,不同的是模式名称里面多一个字母'b’,以表示以二进制形式打开文件。

⑸ c语言 打开文件 先读取再完全覆盖

先用读方式打开文件,读取完毕后关闭文件。再用相同的文件名写打开,原来的文件就自动清空了。以文件名是XXX.txt为例——
FILE *fp;
fp=fopen("XXX.txt","r");//读打开
...
...
fclose(fp);//关闭文件
fp=fopen("XXX.txt","w");//写打开,原来的文件就没有了
...
...
不能先写打开,不然就读不到内容了。

⑹ C语言将二进制文件中的内容读出,修改后在重新存入,要怎么操作

顺序不对
先读
然后再删除
fp=fopen("a.dat","rb");
fread(&n,sizeof(int),n,fp);
del();(删除内容)
fclose;
fp=fopen("a.dat","rb");
fwrite(&n,sizeof(int),n-1,fp);
fclose
同时要注意删除时候数据的连续
以及后续写入的大小
另外
你的fread(&n,sizeof(int),n,fp);
这里两个n必须是不同的
前一个是一个数据的buffer
后一个是代表数据的总长度

⑺ C语言中怎样读取文件数据并对数据排序再重新写入文件

我来回答吧:
首先是两个输入文件:
一个文本文件:scoret.txt
一个二进制文件:scoreb.txt
文本文件scoret.txt我们可以直接编辑(按要求编辑五个学生的姓名和成绩),而二进制文件不易编辑。
我们先写一个代码,实再将scoret.txt文件转成二进制文件scoreb.txt
#include
<stdio.h>
#include
<conio.h>
#include
<stdlib.h>
struct
stu
{

⑻ 在同一c语言中对一个文件先读后写写一次FILE*fp就够了吧

在c语言里调用fopen函数可以打开文件,通过给它配置不同的文件使用方式的参数,可以实现只读/只写/追加等等不同的功能。
如果先读后写的话可以用fopen(“xxfile”,“r+”)的方式实现。并且只需open一次。
请采纳,谢谢。