c语言delete怎么用(数据结构,C语言,delete函数)

本文目录
数据结构,C语言,delete函数
delete是和new一起使用的,如果要使用delete的话意味意着你前面创建链表的时候有使用new创建每一个节点。如果前面没有new的话后面就不能使用delete。
C语言,删除一行
删除文件里的一行内容,后面的行向前移动一行,清空最后一行,程序如下:
假定一行不超过1000字符,
删去第3行,L=3.
输入输出文件名
a.txt
#include《stdio.h》
void
main()
{
FILE
*fin;
fpos_t
pos_w,pos_r,pos;
int
i,k,L=3;
char
*one_line;
one_line
=
(char
*)
malloc(1000*sizeof(char));
fin
=
fopen
("a.txt","rb+");
for
(i=1;i《L;i++)
fgets(one_line,999,fin);
fgetpos
(fin,&pos_w);
fgets(one_line,999,fin);
//
delete
fgetpos
(fin,&pos_r);
pos
=
pos_r;
while
(1
==
1)
{
fsetpos
(fin,&pos);
if
(fgets(one_line,999,fin)
==NULL)
break;
fgetpos
(fin,&pos_r);
pos
=
pos_w;
fsetpos
(fin,&pos);
fprintf(fin,"%s",one_line);
fgetpos
(fin,&pos_w);
pos
=
pos_r;
}
pos
=
pos_w;
fsetpos
(fin,&pos);
k
=
strlen(one_line);
for
(i=0;i《k;i++)
fputc(0x20,fin);
fclose(fin);
}
如何用c语言实现删除文件中指定的数据;例如
1、首先我们输入【deleteScore】函数,先看整体代码,再一一解释。
2、在接下来我们输入永久循环语句。
3、再接下来,我们选择操作删除的方式。
4、再接下来我们就可以调用删除的函数了。
注意事项:
C语言提供了许多低级处理的功能,并仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
C中delete和free有什么区别
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 \x0d\x0a\x0d\x0a对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 \x0d\x0a\x0d\x0a 因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 \x0d\x0a\x0d\x0a我们先看一看malloc/free和new/delete如何实现对象的动态内存管理,见下例。 \x0d\x0a\x0d\x0aclass Obj \x0d\x0a\x0d\x0a{ \x0d\x0a\x0d\x0apublic : \x0d\x0a\x0d\x0a Obj(void){ cout 《 《 “Initialization” 《 《 endl; } \x0d\x0a\x0d\x0a~Obj(void){ cout 《 《 “Destroy” 《 《 endl; } \x0d\x0a\x0d\x0avoid Initialize(void){ cout 《 《 “Initialization” 《 《 endl; } \x0d\x0a\x0d\x0avoid Destroy(void){ cout 《 《 “Destroy” 《 《 endl; } \x0d\x0a\x0d\x0a}; \x0d\x0a \x0d\x0avoid UseMallocFree(void) \x0d\x0a\x0d\x0a{ \x0d\x0a\x0d\x0a Obj *a = (obj *)malloc(sizeof(obj)); // 申请动态内存 \x0d\x0a\x0d\x0a a-》 Initialize(); // 初始化 \x0d\x0a\x0d\x0a //? \x0d\x0a\x0d\x0a a-》 Destroy(); // 清除工作 \x0d\x0a\x0d\x0a free(a); // 释放内存 \x0d\x0a\x0d\x0a} \x0d\x0a \x0d\x0avoid UseNewDelete(void) \x0d\x0a\x0d\x0a{ \x0d\x0a\x0d\x0a Obj *a = new Obj; // 申请动态内存并且初始化 \x0d\x0a\x0d\x0a //? \x0d\x0a\x0d\x0a delete a; // 清除并且释放内存 \x0d\x0a\x0d\x0a} \x0d\x0a\x0d\x0a类Obj的函数Initialize模拟了构造函数的功能,函数Destroy模拟了析构函数的功能。函数UseMallocFree中,由于malloc/free不能执行构造函数与析构函数,必须调用成员函数Initialize和Destroy来完成初始化与清除工作。函数UseNewDelete则简单得多。 \x0d\x0a\x0d\x0a所以我们不要企图用malloc/free来完成动态对象的内存管理,应该用new/delete。由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。 \x0d\x0a\x0d\x0a 既然new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘汰出局呢?这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。 \x0d\x0a\x0d\x0a如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。所以new/delete必须配对使用,malloc/free也一样。

更多文章:
linux驱动是什么(什么叫内核驱动 LINUX 内核驱动)
2026年3月19日 16:00
怎样让微信打开html文件(如何在微信端html5页面调用分享接口)
2026年6月30日 05:15
oracle vm virtual(Win7系统中安装Oracle VM VirtualBox虚拟机的方法)
2026年4月21日 05:00
node js下载 兼容win7(windows 下怎么安装nodejs和npm)
2026年7月8日 18:45





















