if和while的区别在哪里?
昨天去面试,小弟作了一道题,要求判断一个字符串是否是回文。类似 "sim a mis ", " cool ooc " 都是回文。我写了个函数是去掉字符串中的空格。
char *del_blank(char *str, char *str_new)
{
int i, k;
int n=strlen(str);
for(i=0, k=0; i <=n, k <=n; i++, k++)
if(str[i]== ' ')
i++;
str_new[k]=str[i];
return(str_new);
}
面试官说我应该用while(str[i]== ' '),而不是if(str[i]== ' ')。 否则当碰到 "sim a mis "这种有连续几个空格在一起的字符串就会处理不了。这个我理解不了,请各位指点。另外我刚学编程,如果这个函数中有什么其他问题,也请指出来。谢谢。
[解决办法]
这个程序用if也是可以的,因为你已经用for循环了,只是你的程序有点问题,for循环中应该加上大括号。
如下:
char *del_blank(char *str, char *str_new)
{
int i, k;
int n=strlen(str);
for(i=0, k=0; i <=n, k <=n; i++, k++)
if(str[i]== ' ')
i++;
str_new[k]=str[i];
return(str_new);
}
[解决办法]
return(str_new);
并且保证 '\0 '复制到str_new里了
str2要分配内存
char str2[100];
或者char * str2 = new char[sizeof(str)];(最后加delete [] str2;)
不过像你这种情况cout < <del_blank(str, str);也可以