2 sinat 33931347 sinat_33931347 于 2016.02.22 16:06 提问

关于 C语言 文件 添加字符问题

c语言 文件 字符串添加,或替换,或修改

有a.txt内容为
a=1
x!=22
b=333
d=4444

现在要将要a.txt的内容改为
a=100
b=2
c=3
d=4444

即是:
1.在1后面添加00
2.删除第二行
3.删除第三行的后两个3
4.添加一行c=3

要求:
1.直接在原文件上进行修改,不能是用另一个文件来替换掉a.txt

这个直接在原文件中实现添加,我真写不出来代码,

我是以“rw+”的方式打开a.txt的,发现fputs()只能实现替换原字符,不能是添加字符(把后面的文字替换掉了),除非是在文件最后添加内容,在文件中间实现添加,我不知道怎么写代码???
因为fputs等一些函数好像只能替换掉当前文件指针所指的内容。

诚请教如何用c代码实现上面的编程???

1个回答

hyb1996
hyb1996   2016.02.23 00:27
已采纳

这么久都没人回答,因为这个问题无解!本身硬盘的文件系统就不能做到在文件中间插入内容,因为本身文件内容的储存是连续的,要讲abdef变成abcdef只能通常在把d替换为c,然后讲def复制到c后面!文件系统又不是链表,和数组类似!数组的插入只能复制插入位置后面的内容。至于题目要求,题目说要为源文件修改,不代表就不能采用复制的方式进行插入!至于删除,和增加,同理。

hyb1996
hyb1996 其实文件一般是连续的,但是也有不连续的情况,通过文件分配表进行管理,但除非接手操作系统直接操作硬盘,否则无法做到对文件分配表进行操作。
2 年多之前 回复
sinat_33931347
sinat_33931347 对,我也理解了,其实文件也就是一片连续的内存空间,要想添加,简直太难!PS:谢谢大神解答!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
与字符串有关的一些典型问题的C++解法
一、C++中String类的用法总结 http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html http://www.cnblogs.com/gaojun/archive/2010/09/11/1824016.html http://www.cnblogs.com/ggjucheng/archive/201
C语言实现文件字符替换
C语言标准路为我们提供了文件操作函数: 包含:fopen()/fclose()          //文件打开与关闭函数;(参数与返回类型省略)             fgetc()/fputc()             //从流中获取字符,向文件流中写入字符;             getc()/putc()               //与fgetc()/fputc()等价,不同
C语言---在字符数组中插入一个字符的实现
以前都是照猫画虎,一直都没有自己亲自动手尝试过。这次亲自上阵,把自己的思路尽量理清并完成。 设计思路 定义一个字符数组a和标记插入位置的int型变量pos以及插入字符value。再定义一个数组b,大小应该比a大1(更大当然更好),用于pos位后的元素的赋值。赋值,将a中所有元素copy到b。 在pos位置前的元素不改动,pos位置的元素改为value。b[pos]=value;
C中文件基本读写操作(单字符,多字符)
#include using namespace std; void main(int argc,char *argv[]){  //文件的写操作  FILE* file = fopen("C:\\Users\\Administrator\\Desktop\\a.txt", "r");  FILE* file2 = fopen("C:\\Users\\Administrator\\De
C语言读取输入的字符并写入到文件中
学习C语言时练习向文件中写入字符的代码程序。 /* * File: main.c * Author: wuguowei * * Created on 2015年2月12日, 上午11:54 */ #include #include /* * */ int main(int argc, char** argv) { char *filePath = "/hom
C语言--精品代码(一)--字符数组中插入字符串
一、指定位置插入一个字符#include "stdafx.h" #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 100char query[] = "insert into babyData values(,'yuanlifu',37.5,0,22,0,55,0,10,0,12,0,23,0,now());";voi
C语言读取文本文件字符串内容不对,可能是文本编码问题
最近用fgets函数读取文本文件时,出现一个奇怪的现象;当我读取文本第一行的内容,用字符串格式打印出来正确,单个字符打印却没有达到自己想要看到的结果;但是读取第二行文本内容却又正常,刚开始以为是文件指针的问题,后面发现不是。 最后猜测可能是编码问题,把文本编码格式换了一下,马上就好了。 在notepad++编辑测试,发现把文本文件转换成“ANSI编码格式”或者“UTF-8无BOM格式编码”,读
关于C语言的面试问题
今天,参加了一个公司的面试,下面写一下一些感想和想法。 那个公司叫高知特信息技术(上海)有限公司,还是个美国财富500强,上市公司。听那个宣讲人说的很牛X的。 那个宣讲人大致给我们介绍了一下情况。就是高知特信息技术有限公司上海分公司委托他们公司招聘25名工程师,并 且包括培训业务。他们是个培训公司,经常和大公司合作招聘和培训,然后往公司里输送人才。 大家都知道,世界500强公司
C语言中的字符与字符串学习小结
软件编程到底难不难呢?简单的写个小玩意儿似乎也不需要什么太多的知识或者技巧,但是往深了看,每一门编程语言似乎精细奥妙的多。C语言便是一个我用了许久但是始终没有搞明白的一门编程语言。 今天学习了解到的新知识点,关于字符与字符串: 1,用单引号引起的字符,本质上代表的是一个数字; 2,用双引号引起的字符串代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制为0的字
C语言例题——统计字符串中各种字符
统计字符串中各种字符的个数,如何用C语言实现呢,转自C语言网。 题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析: 利用while语句,条件为输入的字符不为’\n’. 2.程序源代码: #include "stdio.h" #include "windows.h" main() { char c; int letters=0,s