c - 如何从字符字符串(位于字符字符串数组中)中删除最后一个字符

标签 c arrays string

因此,我一直在尝试从字符串中删除最后一个字符,该字符位于字符串数组中。我已经进行了一些搜索,但没有找到解决方案。我尝试过 memcpy 或 strcpy n-1 个字节的实现,但没有成功。

这是我想做的事情的要点

char *array[3];
array[0] = "avg:";

我想创建一个新的字符数组并让它保存“avg”。

我以为我能做这样的事情,

char *array[3];
array[0] = "avg:";

char new[sizeof(array[0])-1];
strncpy(new,array[0],sizeof(new));

但这给出了一些时髦的输出,即“avg¤ã@À‡¿”。任何帮助,将不胜感激。

最佳答案

您没有正确终止副本,您的字符串应始终以“\0”结尾。

我会这样做:

char *array[3];
array[0] = "avg:";

char *new = (char *) calloc(strlen(array[0]),sizeof(char));
strncpy(new,array[0],strlen(array[0])-1);

因为内存分配将始终为您的 char 数组分配空内存。

确保在离开您的范围之前释放(新)

关于c - 如何从字符字符串(位于字符字符串数组中)中删除最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40668593/

相关文章:

c - 找到边界元素之和最大的方子矩阵

arrays - 如何从numpy数组中删除空元素

java - 为什么代码片段无法检测到行尾

html - 如何将c文件转换为cgi文件?

c - do-while 循环没有结束

c - 在 cvSetCaptureProperty 中使用 CV_CAP_PROP_POS_FRAMES 获取单个帧

c - 是否可以在 C 中将 char** 转换为 char*?

c - 为什么 c 第二次打印时打印不同的数组?

python - 比较两个 Pandas 系列中的字符串条目

JavaScript 正则表达式,其中没有两个符号一个接一个地出现并且至少存在一个这样的符号