关于C语言中文件修改的操作!

在C语言中,我要修改一条记录,比如定义了一个结构体,里面的成员有 书名,书号,还有剩余这一种书的剩余本数,比方C语言的数,图书管理有5本,借出去了一本,这个成员要减1,我想把修改后的数据重新写入文件中,把原来的覆盖掉。使5变为4,就这个问题,希望高手帮帮。。。最好把代码附上,谢谢

使用文件操作函数fopen即可创建文件,使用文件操作函数fprintf即可修改文件内容。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:

#include<stdio.h>
int i,a[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a
for(;i--;)fscanf(fp2,"%d ",a[i]);//把数组a逆序写入到输出文件当中
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-14
#include<fstream>
#include<iostream>
using namespace std;

class Book
{
char name[20];
char isbn[20];
int number;
public:
void Input();
void ModifyNum();
void Show();
};//Book类的定义

void Book::Input()
{
cout<<"输入:";
cin>>name>>isbn>>number;
}
void Book::ModifyNum()
{
cout<<"修改库存:";
cin>>number;
}
void Book::Show()
{
cout<<name<<" "<<isbn<<" "<<number<<endl;
}

void main()
{
//记录的输入以及写入文件:
ofstream out("book.txt");
Book cbook;
cbook.Input();
out.write((char *)&cbook, sizeof(Book));
out.close();
//从文件读入记录,并且修改记录、保存修改至文件:
Book temp1;
fstream file("book.txt");
file.read((char *)&temp1, sizeof(Book));
temp1.ModifyNum();
file.seekp(0,ios::beg);
file.write((char *)&temp1, sizeof(Book));
file.close();
//读取文件记录:
Book temp2;
fstream in("book.txt");
in.read((char *)&temp2, sizeof(Book));
temp2.Show();
in.close();
}本回答被提问者采纳
第2个回答  2011-05-07
没什么思路,好像是只能不追加,重写一遍!
第3个回答  2011-05-07
使用r+打开,具有写权限,原来的数据还在,写入时才会覆盖,没覆盖的也不变
如果用w,w+等,都会销毁原来的数据,从新写入
比如已有文件中数据abcde
用r+打开在开头写入字母z之后,文件内容变为zbcde
如果带w的方式,就只剩z了
第4个回答  2011-05-07
fa

关于C语言中文件修改的操作!
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。2、例程:include...

在c语言中,怎么修改文件中相关数据信息?
(1)将文件中数据读入内存中,修改后,清空源文件,存入新数据。(2)以读写的方式打开文件,将文件指针移动到要修改的地方,写入新数据。新数据将会覆盖掉旧数据。(3)以读写的方式打开文件,将文件指针定位到需要修改数据的末尾,然后删除需要修改的数据(通过循环n次执行fputc(8,fp),直到清空需要...

怎么用C语言修改文件内容
系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打开方式是二进制模式。我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读\/...

用C语言编程修改文件名(C++也行)
修改文件名,可要调用操作系统提供的API函数,比如Windows上的MoveFile(),也可以直接调用cmd中已提供的重命名命令——rename。下面的示例代码,调用rename命令来重名命文件名。include <stdio.h>#include <stdlib.h>#include <string.h>int main(int ac, char *pav[]){if (ac!=3) {printf("程序...

如何用C语言文件操作修改指定文件
修改文件最好的,最简单的方法,是新建一个文件,把修改部分前面的,先写入新文件,然后写入修改的部分,再把后一部分没有修改的,写到新文件中去。然后文件重命名。原文件改名备份文件,新文件改名原文件。如果修改的数据很少N~100N KB,N~10N MB 可以用缓冲区处理好修改,再写入文件。FILE× fopen...

C语言怎么修改文件内容?
先一组一组数据读取,然后进行比较,看是不是要修改的数据(如果是要修改的数据,那此时文件的指针已经指向下一组数据了),然后用fseek(fp,-sizeof(type),SEEK_CUR);使文件指针指向该数据块(fp为文件指针,sizeof(type)为数据长度,type是指定,可以换成需要的数据类型,比如int或是struct等)。

如何在C语言编程里面修改源文件名字
具体可以分以下2种情况:1、修改单个文件 直接使用rename即可。2、批量修改文件(如:按一定规则修改某目录下所有文件) 需要使用opendir遍历目录,然后修改该目录下文件。下面提供一个简单的例子。void ModFilesName(const char *pcszPath){ char szPathFile[1024] = {0}; \/\/路径+文件名...

c语言的文件操作
一、基本概念 在C语言中,文件操作主要涉及以下几个方面:文件指针、文件打开、文件读写、文件关闭等。文件指针是C语言中进行文件操作的关键,它是一个指向文件的引用,通过这个引用,我们可以对文件进行各种操作。二、文件打开 在进行文件操作之前,需要先打开文件。C语言中提供了多种打开文件的函数,如`...

怎么用C语言对文件操作用特定内容替换其中某些内容
你先读取文件内容,同时做判断,找到你要改的内容时,调用函数 fseek(fp,10L,SEEK_CUR);把文件指针移动到离当前指针位置10个字节的地方(我们假设当前位置偏移10个字节就是你要修改的起始位置);这样你之后的读写都是从这个位置开始。不过要注意的是,你从这位置开始写新的内容,可以覆盖原内容,所以...

C语言怎么修改文本文件具体位置的内容?
一种是将文件按行读取出来,然后修改后全部重新按行写入 一种是计算出原有行的长度和在文件中的位置,然后计算出修改后的行的长度 如果两个长度相等,则直接写入就可以了 如果修改后的短一些,则填入空格 如果修改后的长一些,则比较麻烦,只能将后面的部分也全部重新写入文件 换行一般是\\r\\n 可以以...

相似回答