Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C编程删除行号?_C_Arrays - Fatal编程技术网

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

如何使用C编程删除行号?,c,arrays,C,Arrays,我有一个结构,在结构中我有一个数组 我读了一个文本文件,然后在“数组到结构”中打开它 我所拥有的是一张名单,包括姓名、姓氏和结果 那么,找到行号并选择要删除的行并将其删除的最佳方法是什么呢?我说,阵列成一个结构 我知道我可以使用memmove和realloc,但是我如何使用它们呢?好吧,您所能做的就是将以下元素移到开头,并减少逻辑长度。逻辑长度与物理长度不同,物理长度是阵列可以容纳的最大元素数,取决于分配的内存量 因此,假设一个数组从array开始,包含count元素,那么删除n:th元素的代码

我有一个结构,在结构中我有一个数组

我读了一个文本文件,然后在“数组到结构”中打开它

我所拥有的是一张名单,包括姓名、姓氏和结果

那么,找到行号并选择要删除的行并将其删除的最佳方法是什么呢?我说,阵列成一个结构


我知道我可以使用memmove和realloc,但是我如何使用它们呢?

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

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

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

复制以下元素,除非删除最后一个元素,在这种情况下,没有任何复制,然后减少逻辑长度。

这是真的C,还是你误认为C++为C++?你能把你现在的代码张贴吗?可以更新我的问题……所以你想从数组中删除一行吗?在C中不能这样做。数组只是一个字节序列——删除一行相当于销毁RAM上的几个字节。但是,您可以将其余元素移到后面,使其看起来像您删除了一个元素。是的,实际上我可以这样做,通过使用memmove和realloc,类似这样的东西好的,我会更新我的代码,你会明白我的意思@unwid签出此>>