c - 将 char 附加到 C 数组

标签 c arrays pointers

我有一个这样声明的字符串:

char *mode_s = (char *)calloc(MODE_S_LEN, sizeof(char));

如何在数组末尾添加一个字符?

最佳答案

让我们假设“第一个可用位置”是指索引 0。

char *mode_s = (char *)calloc(MODE_S_LEN, sizeof(char));
*mode_s='a';

将字符存储在任意索引n处

*(mode_s+n)='b';

使用指针代数,如上所示,相当于

mode_s[n]='b'; 

我们看到第一种情况仅仅意味着 n=0。

如果您希望消除递增计数器(如下面的注释中所指定),您可以编写适合您需要的数据结构和支持函数。一个简单的就是

typedef struct modeA{
  int size;
  int index;
  char *mode_s;
}modeA;

支持功能可能是

int add(modeA* a, char toAdd){
  if(a->size==a->index) return -1;
  a->mode_s[index]=toAdd;
  a->index++;
  return 0;
}

添加成功时返回0,空间不足时返回-1。

您可能需要的其他函数可以以类似的方式进行编码。请注意,由于 C 不是面向对象的,因此数据结构必须作为参数传递给函数。

最后,您编写了一个创建实例的函数

modeA genModeA(int size){
  modeA tmp;
  tmp.mode_s=(char *)calloc(size, sizeof(char));
  tmp.size=size;
  tmp.index=0;
  return tmp;
}

因此使用它无需手动增加计数器

modeA tmp=genModeA(MODE_S_LEN);
add(&tmp,'c');

关于c - 将 char 附加到 C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40598845/

相关文章:

java - java jni native 报错

c - 修改链表中结构体的字段

python - 如何在创建字典时选择出现次数最多的元素?

java - 如何使用java打印数组在i和i+1索引处的索引?

c++ - 最后一个 return *this c++ 会发生什么?

c++ - 指针的内存使用情况

c - 读取位宽数据的等效方法

c - 如何在整数后面放置 % 符号

c - 将数组大小声明为 a[N+1]

C 编程 - 结构、指针和初始化