当前位置:首页 » 编程语言 » c语言删除一个txt
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言删除一个txt

发布时间: 2022-07-21 22:04:11

‘壹’ c语言中,如何删除一个txt文档中的内容

c语言修改txt文档的内容只能是先全部读入内存中,然后修改,,再全部写入文件。
所以就需要先把文件的内容fread(或者别的方式也可以)读入字符数组中,,然后在数组中删除你想要删除的字符,,再fwrite(注意与之前读的方式对应)到文件中。。。

‘贰’ 如何用c语言删除txt文件中的数据

因为式结构定义的 基本类型是数组 所以 例如删除 name[1] addr[1](也就是第二个信息)可以将个数组后面的向前移动用一个循环

‘叁’ C语言怎么清除一个TXT文件中所有的信息

fopen
w模式,随便打开就清除

~~~~~

‘肆’ C语言中删除一个txt文件

你试试看这个程序,我先创建一个文件,然后关闭以后删除这个文件,在vc里面通过运行了,而且我也找不到这个文件了,你试试看
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *file;
file=fopen("1.txt","w");
fclose(file);
system("del 1.txt");
return 0;
}
你看看你之前运行的程序都关干净了么,你把你具体程序发出来饿,这样截一段怎么看。就光我这几句语句的话我vc6。0运行以后是没有文件的了

‘伍’ 如何用C语言程序删除电脑里所有的txt文件

在windows下面,可以使用system()命令执行dos命令,来达到删除的效果。
还有个函数,unlink(),可以用来删除文件。
使用时要包含必要的头文件。

示例:
#include<stdio.h>

int main()
{
unlink("你的桌面地址\\123.txt");//你的桌面地址/123.txt
//或者, system("del 你的桌面地址\\123.txt");//使用时包含<dos.h>
return 0;
}
--------------------------------------------
你又补充了哦,
好吧,你的地址错误了。
system("del C:\Users\Administrator\Desktop\\123.txt")
修改为system("del C:\\Users\\Administrator\\Desktop\\123.txt")
因为,\在""是转义的意思,两个\\代表\
或者使用,system("del C:/Users/Administrator/Desktop/123.txt");
---------------------------------------------
你使用的是CPP,我看看,我使用C编译通过了,好像是说你的system定义有问题,头文件不对。
试了下,在使用CPP,也可以啊,那应该是你编译环境有问题吧,我使用的是GCC。无能为力了。
你试看看unlink.
---------------------------------------------
用gcc编译c程序的时候 经常会出现
implicit declaration of function '...' 的warning

1 没有把函数所在的c文件生成.o目标文件;
2 在函数所在的c文件中声明了,但是没有在调用它的.h或.c文件中声明;
3 其头文件都声明过了,所调用的函数的原型与所传的实参类型不匹配.

‘陆’ 怎么用C语言写程序把一个".txt"格式的文档删除

用unlink函数,参数为文件名

int unlink(const char *filename);

比如你的txt文件叫a.txt

就调用unlink("a.txt");即可

‘柒’ 用C语言删除一个TXT文件中的超链接

本代码测试数据:

超衔接格式我用的普通html的a标签格式,识别前后匹配字符串分别是"<a href="和"</a>"。

如果你想要识别其他字符串并删除,请修改函数int deleteHREF(char *str,int len)中的代码:

char strB[]="<a href=",strE[]="</a>";

程序功能说明:

识别每行数据中对应的超衔接字符串,并删除。可以一行对应多个超衔接文本。

不识别跨行的超衔接!!!!(一条超衔接,分两行写,这种不识别,注意!!)。

运行后,会在原文件的地址下新建一个new开头的文件存放删除后的数据。

比如源数据c:list.txt。执行代码后就会新建c: ew_list.txt。这就是你要的数据。

#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
#defineMAXC500//预估行最大字符数量,必须大于实际数量,可改大,实际代码会动态分配空间,不会浪费内存
#defineMAXFPATH100//路径最大字符
#defineMAXFNAME50//文件名最大字符
typedefstructfpInfo
{
charpath[MAXFPATH];
charfname[MAXFNAME];
char**content;
intnrow;//行数
int*nCol;//实际每行字数(同时nCol[]+1也是行内存大小)
}FPINFO;
FPINFO*init();
voidprintfTXT(FPINFO*fpInfo);//打印文本内容
voidmeError(void*p);//内存申请失败
intdeleteHREF(char*str,intlen);//删除一行字符串中超衔接文本,删除成功返回1,失败返回0
intdelStr(intindexB,intindexE,char*str);//删除str中下标indexB到indexE的字符,返回删除后的字符串长度
voiddelFromTXT(FPINFO*fpInfo);//从文本中删除超衔接
intwriteFile(FPINFO*fpInfo);//一次写入一行
intmain()
{

FPINFO*fpInfo=NULL;
fpInfo=init();
if(fpInfo)
printfTXT(fpInfo);
delFromTXT(fpInfo);
printfTXT(fpInfo);
writeFile(fpInfo);

return0;
}
voiddelFromTXT(FPINFO*fpInfo)//从文本中删除超衔接
{
inti;
printf(" 开始从文本中删除所有超衔接内容 ");
for(i=0;i<fpInfo->nrow;i++)
deleteHREF(fpInfo->content[i],fpInfo->nCol[i]);
printf("删除完成 ");
}
intdeleteHREF(char*str,intlen)//删除一行字符串中超衔接文本,删除成功返回1,失败返回0
{
inti,m,n,flag,flagB,flagE,lenB,lenE,indexB,indexE;
charstrB[]="<ahref=",strE[]="</a>";
lenB=strlen(strB),lenE=strlen(strE);
while(1)
{
flag=0;
flagB=0;
flagE=0;
for(i=0;i<len;i++)
{
if(flagB)//首字符串匹配成功,开始寻找尾字符串
{
m=i;
for(n=0;n<lenE;n++)//对比超衔接尾字符串
{
if(str[m]!=strE[n])
break;
m++;
}
if(n==lenE)//尾字符串也匹配成功
flagE=1,indexE=m-1;
}
else
{
m=i;
for(n=0;n<lenB;n++)//对比超衔接首字符串
{
if(str[m]!=strB[n])
break;
m++;
}
if(n==lenB)//首字符串匹配成功,下次循环从对应首字符串之后开始
flagB=1,i=m-1,indexB=m-lenB;
}

if(flagB&&flagE)//首尾都匹配说明找到一个完整的衔接,执行删除衔接,行字符串移位,并开始再次检查该行字符串是否有其他衔接
{
len=delStr(indexB,indexE,str);
flag=1;
break;
}
}
if(!flag)//复查没有找到新的匹配字符串,结束查找
break;
}
return0;
}
intdelStr(intindexB,intindexE,char*str)//删除str中下标indexB到indexE的字符,返回删除后的字符串长度
{
str[indexB]=0;
strcat(str,&str[indexE+1]);
returnstrlen(str);
}
voidprintfTXT(FPINFO*fpInfo)//打印文本内容
{
inti;
printf("当前txt文本中的内容是: ---------------- ");
for(i=0;i<fpInfo->nrow;i++)
printf("%s ",fpInfo->content[i]);
printf("---------------- ");
}
FPINFO*init()
{
introw=0,len=0,*ncSave=NULL;
FILE*fp=NULL;
charfilePath[MAXFPATH+MAXFNAME]={0};
charstr[MAXC]={0},*rCtt=NULL,**cSave=NULL;
FPINFO*fpInfo=(FPINFO*)malloc(sizeof(FPINFO));
meError(fpInfo);
printf("请输入要读取的文件路径(不包含文件名,小于%d个字符): ",MAXFPATH);
scanf("%s",fpInfo->path);
printf("请输入要读取的文件名称(小于%d个字符): ",MAXFNAME);
scanf("%s",fpInfo->fname);

strcat(filePath,fpInfo->path);
strcat(filePath,fpInfo->fname);
fpInfo->content=NULL;
fpInfo->nCol=NULL;

fp=fopen(filePath,"rt+");
if(!fp)
{
printf("文件打开失败! ");
returnNULL;
}
fseek(fp,0,SEEK_SET);
while(fgets(str,MAXC,fp))
{
len=strlen(str);
row++;
if(!fpInfo->content)
fpInfo->content=(char**)malloc(sizeof(char*)*row);
else
{
cSave=realloc(fpInfo->content,sizeof(char*)*row);
if(cSave)
fpInfo->content=cSave;
}
fpInfo->nrow=row;
if(!fpInfo->nCol)
fpInfo->nCol=(int*)malloc(sizeof(int)*row);
else
{
ncSave=realloc(fpInfo->nCol,sizeof(int)*row);
fpInfo->nCol=ncSave;
}

fpInfo->nCol[row-1]=len;


rCtt=(char*)malloc(sizeof(char)*len+1);
meError(fpInfo->content);
meError(rCtt);
memset(rCtt,0,len+1);
strcpy(rCtt,str);
fpInfo->content[row-1]=rCtt;
memset(str,0,MAXC);

}
fclose(fp);
returnfpInfo;
}
intwriteFile(FPINFO*fpInfo)
{
charfilePath[MAXFPATH+MAXFNAME+1]={0};
inti,row=fpInfo->nrow;
FILE*fp=NULL;
strcat(filePath,fpInfo->path);
strcat(filePath,"new_");
strcat(filePath,fpInfo->fname);


fp=fopen(filePath,"w+");
if(!fp)
{
printf("文件创建失败! ");
return0;
}
fseek(fp,0,SEEK_SET);
printf(" ----开始写入新的文件---- ");
for(i=0;i<row;i++)
fprintf(fp,"%s",fpInfo->content[i]);
printf("----新数据保存完成---- ");
fclose(fp);
return1;
}
voidmeError(void*p)//内存申请失败
{
if(p==NULL)
{
printf(" 异常:内存申请失败!回车结束程序! ");
while(getch()!=' ');
exit(0);
}
}

‘捌’ C语言如何将一个txt文件内的指定字符串删除..在线等

首先,打开一个tmp.txt的文件保存结果文件
FILE* out=fopen("tmp.txt","w");
FILE* in=fopen("原文件.txt","r");

循环采用fgets从in中读入字符串,fgets可以指定读入的最大字符串长度,因此可以一部分一部分地读,处理到文件结束为止
然后,因为你是要对完整的单词进行处理,所以fgets完之后再继续fgetc一个一个的字母,直到读到一个','再结束,这样就可以在内存中读到一部分的完整单词

char str[1000]; //开个1000长度的字符串数组
int len;
while (fgets(str,900,in)!=NULL) //读900个,留点空间后面可以读入直完整单词
{
len=strlen(str);
if (str[len-1]=='\n')
{
str[len-1]='\0'; //fgets还有个特点,碰到回车会结束,所以如果碰到回车,就会把结尾的回车也读进去,要去掉
len--;
}
while (str[len-1]!=',') //把最后的单词读完整
{
str[len]=fgetc(in);
if (str[len]==EOF) break;
len++;
}
str[len]='\0';
//接下来对str中的单词进行处理啦,这里自己写,逐个地读,判断是不是要删除的那个,不是的话,就写入out文件中
}
//最后,删除原文件,把tmp.txt代替原文件
fclose(in);
fclose(out);
remove("原文件.txt");
rename("tmp.txt","原文件.txt");

‘玖’ c语言 怎么将一个txt文件的所有信息删除

c语言将一个txt文件的所有信息删除的实现方法是以写模式打开一个同名文件,用来覆盖原来的文件,这样原来文件的内容将被删除。
具体显示方法如下:
int
main()
{
int
i;
FILE
*data;
data
=
fopen("peding.txt",
"w");
if(!data)
{
perror("对不起,文件找不到");
return
1;
}
/*循环写入100次
*/
for(i
=
0;
i
<
100;
i++)
writedata(data);
fclose(data);
return
0;
}
/*写入内容不操作*/
void
writedata(FILE
*data)
{
//刷新缓冲区
/*
do
other
stuff
*/
...
}

‘拾’ C语言 已存在一个txt文件,需要将它的内容完全删除并写入新的内容,代码应该怎么写

下面是个例子,可以参考下。

char path[256] = "/tmp/xxx.txt"; // 文件路径为/tmp/xxx.txt
File *fp = fopen(path, "w"); //以写方式打开,已存在的文件将内容清空,只允许写
fwrite("dadasdasdas", strlen("dadasdasdas"), 1, fp); //把新的内容写入
fclose(fp); //关闭文件句柄

请采纳,谢谢