在C语言中删除字符内容的问题
请问哪位知道如何删除C语言程序创建的文件里面的内容,如:我用C 创了一文件为TEST.TXT,里面内容为:THIS IS A C PROGRAM ,WELLCOME!,现在我想删除 C PROGRAM 这两个字符,该如何做呀?
请各位赐教,谢谢!!
问题点数:100、回复次数:13Top
1 楼du51(郁郁思扬)回复于 2006-05-03 21:25:30 得分 0
读到数组里,删除后再写进去..Top
2 楼yuanchuang(元创)回复于 2006-05-03 21:34:53 得分 0
读到数组里,删除后再写进去..
C里面没有现成的函数。
ps:du51(郁郁思扬) ( ) 信誉:100 ,又升星了?怎么没有放分庆祝啊?Top
3 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2006-05-03 21:35:19 得分 0
可以这样做:
首先读入文件到一个string 对象里面,然后删除不要的部分,然后写回文件即可
Top
4 楼ENOUGH_XU(苦点,累点->没关系)回复于 2006-05-03 22:00:35 得分 0
学习Top
5 楼flamingheart(火焰心)回复于 2006-05-03 22:05:15 得分 0
对,就像楼上说的那么做
Top
6 楼eminwoo(天邪鬼)回复于 2006-05-03 22:13:14 得分 0
#include <fstream.h>
#include <string.h>
#include <iostream.h>
void main()
{
//先写一个文件
ofstream o("text.txt");
char str[]="THIS IS A C PROGRAM ,WELLCOME!";
o.write(str,strlen(str));
o.close();
//把字符从文件里读到newstr
ifstream i("text.txt");
char ch;
int j=0;
char newstr[255];
while(!i.eof())
{
i.read(&ch,1);
newstr[j]=ch;
j++;
}
newstr[j-1]='\0';
i.close();
//将newstr的"C PROGRAM"清空
char * pch;
pch = strstr (newstr,"C PROGRAM");
strncpy (pch,"",strlen("C PROGRAM"));
cout<<newstr<<endl;
//再将newstr写入文件
o.open("text.txt");
o.write(newstr,strlen(newstr));
o.close();
}Top
7 楼killerll()回复于 2006-05-03 22:14:53 得分 0
问问大家。
int deQueue(PNODE *tail,int *e)
{ PNODE p,q;
if((*tail)->next == *tail)return –1;
p = (*tail)->next;
q = p->next;
*e = q->value;
___(4)___ = q->next;
if(*tail = q) ___(5)___;
free(q);
return 0;
}
为什么这段代码表示队列的出列啊?
tail表示尾指针。
队列应该是先进先出啊。
应该从头指针的方向出列啊。没有弄明白Top
8 楼flamingheart(火焰心)回复于 2006-05-03 22:15:50 得分 0
楼上的,你要是问问题的话自己发个主题贴好不好。Top
9 楼killerll()回复于 2006-05-03 22:16:23 得分 0
我发了主题贴。没有人理我啊!!Top
10 楼dongfeng2008(郑军)回复于 2006-05-21 08:55:35 得分 0
谢谢各位了Top
11 楼jixingzhong(瞌睡虫·星辰)回复于 2006-05-21 10:54:52 得分 0
对文件的操作,
删除、修改等比较复杂,
因为需要获取数据,修改,回写,还要考虑文件长度等 ...
所以,
一般都是直接读取数据后重新写到一个新的文件中去,
这样就可以不需要在原来的文件中考虑指针定位等一些精细的工作了 ....Top
12 楼ugg(逸学堂(exuetang.net))回复于 2006-05-21 10:59:38 得分 0
读入文件内容,删除后回写到文件内。Top
13 楼csucj()回复于 2006-05-21 17:55:13 得分 0
删除C PROGRAM的部分:
int pos=str.find("C PROGRAM");
if (pos<str.length())
{
str.erase(pos,strlen("C PROGRAM"));
cout<<str;
fout.clear();
fout<<str;
}
else
{
cout<<"not found!"<<endl;
}
fout.close();
Top




