本文目录一览:
C语言:如何根据需要删除文件中特定的行
C语言文件操作有覆盖和追加两种模式,但不提供插入模式。所以要在文件中指定行进行删除或者插入,需要按照如下流程操作: 1、以只读打开文件; 2、将文件逐行读入到内存中; 3、关闭文件; 4、在内存中对指定行插入或者删除; 5、以只写打开文件; 6、将修改后的数据写入文件; 7、关闭文件。参考代码:假定文件最多100行,执行删除第5行,并在原第8,9行中间插入一行数据为例,代码如下: #include #include char buf[100][1000];int main(){ FILE *fp; char *s="abcdef\n";//要插入的数据 int i=0; int n=0; fp = fopen("my.txt", "r");//读方式打开文件 while(fgets(buf[n], 1000, fp) != EOF)//循环读取所有数据 n++; fclose(fp);//关闭文件。 for(i = 4; i7; i ++)//删除第五行 strcpy(buf[i],buf[i+1]); strcpy(buf[7], s);//插入到第8行。 fp=fopen("my.txt", "w");//写方式打开文件。 for(i = 0; i n; i ++)//写入所有处理后的数据。 fputs(buf[i], 1000, fp); fclose(fp);//关闭文件。 return 0; }
如何用C语言删除,创建文件
#includeio.h
#includestdio.h
int main(){
FILE *p;
if(_access("code.csv",F_OK)==0)remove("code.csv");//如果存在就删除
p=fopen("code.csv","w");//创建
fclose(p);
return 0;
}
c语言修改、删除文件中的字符串
字符串其实是一个数组。你把后面的abcd依次移到****位置上。然后让字符串结束就好了。
符串或串(string)是由零个或多个字符组成的有限序列。一般记为
s='a1a2???an'(n=0)。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
[编辑本段]字符串函数
1.
连接运算
concat(s1,s2,s3…sn)
相当于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
2.
求子串。
copy(s,i,l)
从字符串s中截取第i个字符开始后的长度为l的子串。
例:copy(‘abdag’,2,3)=’bda’
3.
删除子串。过程
delete(s,i,l)
从字符串s中删除第i个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
4.
插入子串。
过程insert(s1,s2,i)
把s1插入到s2的第i个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
5.
求字符串长度
length(s)
例:length(‘12abc’)=5
在asp中
求字符串长度用
len(s)例:
len("abc12")=5
6.
搜索子串的位置
pos(s1,s2)
如果s1是s2的子串
,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos(‘ab’,’12abcd’)=3
7.
字符的大写转换。upcase(ch)
求字符ch的大写体。
例:upcase(‘a’)=’a’
8.
数值转换为数串。
过程
str(x,s)
把数值x化为数串s.
例:str(12345,s);
结果s=’12345’
9.
数串转换为数值。
过程val(s,x,i)
把数串s转化为数值x,如果成功则i=0,不成功则i为无效字符的序数
例:val(‘1234’,x,i);结果
x:=1234
如何用c语言文件操作来实现删除文件某段内容功能?
C语言删除磁盘文件内容中间一段字符串的方法
假定磁盘文件中连续存放了相同长度的若干段字符串,要删除中间的某一段字符串,剩下的继续保存在文件中。
代码如下,有比较清楚的注释。
//变量定义部分省略
file=fopen(pathname,"rb");//打开磁盘文件,file是文件指针,pathname是磁盘文件的路径和文件名
filedata[0] = (char *)malloc(LENGTH*sizeof(char));//filedata是指针数组用于存放删除后的临时数据,LENGTH是每个字符串的相同长度
//找出要删除的字符串,并将其它的字符串存入临时指针数组
for(found=0,y=0;fread(filedata[y],LENGTH,1,file); )//found用于判断是否找到要删除的字符串
{
*(filedata[y]+LENGTH)='\0';
if(found==0)//没有找到前才进行比较
{
if( strcmp(deldata,filedata[y])==0 )//deldata是要删除的字符串
{
found=1;
//找到要删除的字符串,从临时存放的指针数组中删除
free(filedata[y]);
y--;
}
}
y++;
filedata[y] = (char *)malloc((LENGTH+1)*sizeof(char));
}
free(filedata[y]);//y多加了1,多申请了一段内存空间
fclose(file);
if(found==0)
{
printf("没有找到要删除的字符串。\n");
}
else//将已删除指定字符串后剩余的所有数据从临时存放的指针数组中重新保存到磁盘文件
{
file=fopen(pathname,"wb");
for(m=0;m
{
fwrite(filedata[m],LENGTH,1,file);
free(filedata[m]);//释放内存
}
fclose(file);
}