c - 如何使用C编程删除行号?

标签 c arrays

我有一个Structure ,在 Structure我有一个Array ,

我读取了一个文本文件,然后在“Array Into Structure”中打开它,

我拥有的是姓名、姓氏、结果的列表。

那么查找行号并选择要删除的行并将其删除的最佳方法是什么?我说,Array进入Structure .?

我知道我可以使用memmoverealloc但我该如何使用这些呢?

最佳答案

好吧,您所能做的就是将以下元素移向开头,并减少“逻辑”长度。逻辑长度与物理长度不同,物理长度是数组可以容纳的最大元素数,具体取决于已分配的内存量。

因此,假设一个数组从 array 开始并包含 count 个元素,删除第 n:th 个元素的代码将是:

if( n < count - 1)
  memmove(array + n, array + n + 1, ((count - n) - 1) * sizeof *array);
--count;

这将复制以下元素(除非您要删除最后一个元素,在这种情况下没有任何内容可复制),然后减少逻辑长度。

关于c - 如何使用C编程删除行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155687/

相关文章:

python - C/Python 套接字性能?

arrays - Bash 间接引用关联数组

java - 在java中的特定位置将一个数组的元素添加到另一个数组

c - 在C中的多维数组中添加行和列

c - 在 C 中对链表进行排序时的无限循环

.net - T[] 和 List<T> 在内存方面的内部差异是什么?

arrays - 哈希表桶数组

C++ 制作数组哈希

c - bison -d 创建头文件无法正确包含头文件

c - 尝试使用已安装的开发人员工具进行编译时,找不到 editline/history.h 和 editline/readline.h/在 macOS 上工作