yahoo一题目:把一个字符串倒序。

jackxiang 2009-8-3 11:01 | |
原文:

main()
{
  char *src="hello,world";
  char *dest = NULL;
  int len=strlen(src);
  dest = (char*)malloc(len);
  char *d = dest;
  char *s = src[len];//它出题意图是指向最后,然后再减减到开始处,但是C语言是不能这样直接指向的,必须这样:    s = src+len-1;  而且两边的类型也不等,一边是指针,一边是一个数值,写对: char *s = &src[len];
  while(len-- != 0)
  {
    d++ = s--;
    printf("%s",dest);

  }
}
改错:


#include <stdio.h>
#include <string.h>

int main()
{
    char *src="hello,world";
    char *dest = NULL;
    int len=strlen(src);

    printf("src =[%s]\n", src);
    dest = (char*)malloc(len+1);
    char *d = dest;
    char *s = NULL;
    int i =0;

    s = src+len-1;
    //s = &src[len]-1; //这个操作就是对内存指针很了解的情况下进行的:取到地址,然后减少一个char类型地址的偏移量。

   //s = &src[len-1];  //直接取到不是\0的前一个字符地址。

    while (len-- != 0)
    {
        *d++ = *s--;
    }

    *d = 0;

    printf("dest=[%s]\n",dest);
    return 0;
}

Q2:


char str[] = "I love sina china";
char *p;
p=str;
printf("%c",*p);//是把这个地址的内容给取出来,传的是一个地址指向的内容!
printf("%s",p+2);//把这个首地址的内容取出来,然后加二个地址偏移,然后打印出这个地址以及后面的内容,这儿传入的是一个地址!

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/1883/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2009-8-3 11:49
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]