因此,我一直在尝试从字符串中删除最后一个字符,该字符位于字符串数组中。我已经进行了一些搜索,但没有找到解决方案。我尝试过 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/