字符串的初始化
/*
* @ brief: 删除字符串末尾空格
* @ param: src [in] 源字符串
* @ param: des [out] 返回的目标字符串
*/
void DeleteSpace(char *src, char *des) {
int i = 0;
memset(des, 0, sizeof(des));
int len = strlen(src);
char *temp = (char *)(src + len - 1);
while (*temp-- == '-') {
i++;
}
strncpy(des, src, len - i);
}
int main() {
// 为了便于观察,现将空格以字符'-'替代
char test[] = "hello world------";
char output[512];
//memset(output, 0, sizeof(output));
DeleteSpace(test, output);
cout <<output <<endl;
return 0;
}
我将字符串output的初始化放在函数里面,但在函数里面查看des的内容是初始化了的,但是退出函数output还是没有初始化,这是问什么啊? c
[解决办法]
memset(des, 0, sizeof(des));
这个有问题,对指针取大小,这个数值通常是4
[解决办法]
void DeleteSpace(char *src, char *des) {
int i = 0;
//memset(des, 0, sizeof(des));//没有任何意义
int len = strlen(src);
char *temp = (char *)(src + len - 1);
while (*temp-- == '-') {
i++;
}
strncpy(des, src, len - i);//不会加'\0'
des[len-i] = 0;
}[解决办法]
memset(des, 0, strlen(des));
[解决办法]
貌似你用release版watch了
[解决办法]
strncpy(des, src, len - i);//不会加'\0',如果source长于len,在你的程序中没有这问题。