【发布时间】:2017-07-11 11:41:06
【问题描述】:
我有这个代码:
int i =0;
char * str = "ar bitrary whitespace";
int whitespace=0,index;
for(index = 0;index < strlen(str);index++)
{
if(isspace(str[index]) != 0)
{
whitespace++;
}
}
char * tmp = (char *)calloc(strlen(str)-whitespace +1,sizeof(char));
memset(tmp,'\0',strlen(tmp)+1);
while(i < strlen(str))
{
if(isspace(str[i]) != 0)
{
i++;
continue;
}else if(isspace(str[i]) == 0)
{
strcat(tmp,&str[i]);
i++;
}
}
printf("\nnew string is: %s \n",tmp);
问题是输出是一个没有删除空格的字符串+一些垃圾字符。 我用memset来null终止tmp,有问题吗?
【问题讨论】:
-
字符串后的垃圾听起来像是缺少字符串终止符。
标签: c string algorithm removing-whitespace