学习笔记1.4

7、请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

#include "string.h"
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",dest);
    return 0;
}
答:
方法1:
int main()
{
    char* src = "hello,world";
    int len = strlen(src);
    char* dest = (char*)malloc(len+1);//要为\0分配一个空间
    char* d = dest;
    char* s = &src[len-1];//指向最后一个字符
    while( len-- != 0 )
        *d++=*s--;
    *d = 0;//尾部要加\0
    printf("%s\n",dest);
    free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
    return 0;
}
方法2:
#include <stdio.h>
#include <string.h>
main()
{
    char str[]="hello,world";
    int len=strlen(str);
    char t;
    for(int i=0; i<len/2; i++)
    {
        t=str[i]; 
        str[i]=str[len-i-1]; str[len-i-1]=t;
    }
    printf("%s",str);
    return 0;
}

posted @ 2010-12-23 22:28  hailong  阅读(222)  评论(0编辑  收藏  举报