我想知道如何从结构中删除字符串数组。
例如,我有一个结构和一个数组定义如下:
struct dataofcall {
char day[25];
char country[25];
char startofthecall[6];
char endofthecall[6];
};
dataofcall call[MAX];
然后,我要求用户输入他想要输入的呼叫数:例如:3
.
然后使用for循环,用户输入关于1
、2
和3
调用的信息,如下所示:
Monday Luxembourg 22:12 22:15
Tuesday Germany 12:21 14:16
Tuesday France 09:08 23:23
call[0]
将如下所示:
call[0].day[25] = "Monday";
call[0].country[25] = "Luxembourg";
call[0].startofthecall[6] = "22:12";
call[0].endofthecall[6] = "22:15";
call [1]将类似于:
call[1].day[25] = "Germany";
等等。
因此,现在我需要从call
中删除信息,例如2
和3
,1
以及其他调用(如果有)将保持不变。
我就是不明白怎么删除,也不知道怎么输入调用信息什么的,就想求一下算法或者小循环,帮我从struct数组中删除一个字符串。
我试着这么做:
strcpy(call[0].country, "Data is deleted.");
但它看起来有点不正确,好像它应该是更好的方式来做,我找不到。
2条答案
按热度按时间at0kjp5o1#
您不能删除(例如释放内存),但可以执行类似以下操作
呼叫[0]。国家[0] = '\0';
这使得字符串处理函数将call[0].country视为空字符串,因为第一个字符现在是字符串结束符\0。
erhoui1w2#
如果数组声明为自动或静态存储持续时间:
那就没办法删除了。
当数组到达声明它的块的右大括号时,数组将停止存在(在自动存储持续时间的情况下)。但是,静态存储持续时间在程序的生命周期内存在,不会超出范围。
如果您改为在堆上动态分配内存,如下所示:
然后可以通过调用
free()
删除(或释放)从堆中分配的内存。