本帖最后由 张家伟2014 于 2014-6-8 07:29 编辑
- #include string.h
- #include "stdio.h"
- main(void)
- {
- char *src="hello,world";
- char *dest=NULL;
- dest=(char *) malloc(strlen(src));
- int len=strlen(str);
- char *d=dest;
- char *s=src[len];
- while(len--!=0)
- d++=s--;
- printf("%s",dest);
- }
复制代码 一、01行错误:包含一个头文件时,应该写在<>内,修正如下:二、02行:编译时需要找到包含的头文件,使用<>这种方式,编译器会在标准库中开始查找,使用""这种方式,编译器会在当前工程所在的文件夹开始查找。为了提高查找效率,修正如下:三、03行:main函数不明确标明返回值时,默认返回值为int,在C99标准中要求编译器至少给这种用法一个警告,修正如下:四、07行错误:strlen函数不将字符串结尾标志'\0'计入长度,所以分配内存块时,需要多分配一个字节,修正如下:- dest = (char *)malloc(strlen(src)+1);
复制代码 五、10行错误:程序是想将字符串倒置,那么需要记录字符串结尾标志'\0'的前一个字符的地址,而src[len]是字符串结尾标志'\0',并且不是地址,修正如下:六、12行错误:一个指针包含两方面的含义,存储单元表示的地址和指针指向存储单元的数据类型。指针d和s存放的是存储单元的地址,需要用指针运算符对指向对象进行操作,修正如下:七、最后一步添加字符串结尾标志'\0',修正如下:修正后代码如下:- #include <string.h>
- #include <stdio.h>
- int main(void)
- {
- char *src = "hello,world";
- char *dest = NULL;
- dest = (char *)malloc(strlen(src)+1);
- int len = strlen(src);
- char *d = dest;
- char *s = &src[len-1];
- while (0 != len--) {
- *d++ = *s--;
- }
- *d = '\0';
- printf("%s\n",dest);
- }
复制代码
|