c - 移位字符串数组 C

标签 c pointers c-strings

我正在尝试在 C 中创建一个函数,将数组中的所有元素(字符串)向上移动并在末尾插入一个字符串。由于某种原因,我创建的函数会导致数组的所有元素具有相同的值(我要插入的值)。我不确定我做错了什么。

起初我认为可能是因为它们是字符串,并且它们要移动到的元素需要在内存中重新分配,但我认为无论如何我只是移动字符串的内存位置。我肯定误会了什么。

任何帮助将不胜感激。

void addItem(char **list, char *item, int size){
    int i;

    // loop through the list and move everthing up
    for(i=0; i<size-1; i++){
        // move items up until we are at the last item
        list[i] = list[i+1];
    }
    // set the last item
    list[size-1] = item;
}

最佳答案

这是一个建议,您可以如何做到这一点

void addItem(char **list, char* item, int* count, int size)
{
  int i = 0;
  if (*count == size)
  {  
    for (i = 0; i < size-1; ++i)
    {
      list[i] = list[i+1];
    }
    list[size-1] = item;
  }
  else
  {
    list[*count] = item;
    (*count)++;
  }
}

您需要区分数组中的字符串数量和数组的最大大小。

关于c - 移位字符串数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521584/

相关文章:

c - C 中的字符串结构变量赋值错误

c - 在 C 中一起使用 strlen 和断言

c++ - 单行指针操作

c - FIFO 队列头指针不正确

c - 指向结构指针内字符串中的字符

c - fprintf() 打印 0 而不是完整的浮点值(转换问题?)

c - 将 64 位指针存储在 32 位整数中,前提是最大虚拟内存地址 <= UINT32_MAX(例如,当 RAM 大小 <= 4GB 时)

c - 函数返回后esp的值是多少?

c - 如何使用这个链接描述文件程序?

c - 为什么 fork() 的返回值在 C 中有 2 个 pid 值?