所以,我一直在尝试从字符串中删除最后一个字符,该字符串位于字符串数组中。我做了一些搜索,没有找到解决方案的运气。我已经尝试了memcpy或strcpy n-1字节的实现,但它们还没有解决。
以下是我正在尝试做的事情的要点
char *array[3];
array[0] = "avg:";
我想创建一个新的char数组并让它保持“avg”。
我以为我能做这样的事情,
char *array[3];
array[0] = "avg:";
char new[sizeof(array[0])-1];
strncpy(new,array[0],sizeof(new));
但这会产生一些时髦的输出,即“avg¤ã@À‡¿”。任何帮助,将不胜感激。
答案 0 :(得分:0)
您没有正确终止副本,您的字符串应始终以' \ 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数组分配空内存。
在离开示波器之前确保free(new)
。