我有一个这样声明的字符串:
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/