首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个字符串倒序的有关问题

2012-03-03 
一个字符串倒序的问题#includestdio.h各位大哥帮忙看看哈.这段代码有哪几个错误?说明下原因嘛!哎~~~~~基

一个字符串倒序的问题
#include   <stdio.h>
各位大哥帮忙看看哈.
这段代码有哪几个错误?
说明下原因嘛!
哎~~~~~     基础不好.
int   main()
{
  char*src= "hello,world ";
  char*   dest=NULL;
  int   len=strlen(src);
  dest=(char*)malloc(len);

  char*   d=dest;
  char*   s=src[len];
  while(len--!=0)  
d++   =   s--;
  printf( "%s\n ",dest);
  return   0;
}

[解决办法]
int main()
{
char*src= "hello,world ";
char* dest=NULL;
int len=strlen(src);
// dest=(char*)malloc(len);
dest = (char *)malloc(len+1) // 字符串后面必须要有 '\0 '

char* d=dest;
// char* s=src[len];
char *s = &src[len-1]; // 最后一个字符是在src[len-1],取地址
while(len--!=0)
// d++ = s--;
*d++ = *s--; // 需要递引用,否则就是指针赋值啦
printf( "%s\n ",dest);
return 0;
}
[解决办法]
随手写一个:

char * res(char *str)
{
char tp;
char *re=str;
char *pb=str;
char *pe=str+strlen(str)-1;
while(pe> pb)
{
tp=*pe;
*pe--=*tb;
*pb++=tp;
}
return re;
}
不过似乎除了没有申请空间外, 没有什么别的优点,
[解决办法]
gfxiang(afu) 讲得很明白了,楼主应该知道错在哪了吧 ?
再改一个地方就完美了dest[len] = '\0 '; // 这句也不能忘记了。
改成这样:*dest = '\0 '; // 这句也不能忘记了
[解决办法]
void reverse_str(char *p)
{
if (*p == '\0 ')
return;
else
reverse_str(p + 1);
printf ( "%c ", *p);
}

[解决办法]
MS de
char * strrev (char * string)
{
char *start = string;
char *left = string;
char ch;

while (*string++)
;
string -= 2;

while (left < string)
{
ch = *left;
*left++ = *string;
*string-- = ch;
}

return(start);
}

热点排行