黑马程序员技术交流社区
标题:
我遇到了一个错误,大家能帮我找找吗
[打印本页]
作者:
qddnovo
时间:
2014-6-7 22:02
标题:
我遇到了一个错误,大家能帮我找找吗
本帖最后由 qddnovo 于 2014-6-11 21:47 编辑
#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);
}
作者:
张家伟2014
时间:
2014-6-7 22:40
本帖最后由 张家伟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行错误:包含一个头文件时,应该写在<>内,修正如下:
#include <string.h>
复制代码
二、02行:编译时需要找到包含的头文件,使用<>这种方式,编译器会在标准库中开始查找,使用""这种方式,编译器会在当前工程所在的文件夹开始查找。为了提高查找效率,修正如下:
#include <stdio.h>
复制代码
三、03行:main函数不明确标明返回值时,默认返回值为int,在C99标准中要求编译器至少给这种用法一个警告,修正如下:
int main(void)
复制代码
四、07行错误:strlen函数不将字符串结尾标志'\0'计入长度,所以分配内存块时,需要多分配一个字节,修正如下:
dest = (char *)malloc(strlen(src)+1);
复制代码
五、10行错误:程序是想将字符串倒置,那么需要记录字符串结尾标志'\0'的前一个字符的地址,而src[len]是字符串结尾标志'\0',并且不是地址,修正如下:
char *s = &src[len-1];
复制代码
六、12行错误:一个指针包含两方面的含义,存储单元表示的地址和指针指向存储单元的数据类型。指针d和s存放的是存储单元的地址,需要用指针运算符对指向对象进行操作,修正如下:
*d++ = *s++;
复制代码
七、最后一步添加字符串结尾标志'\0',修正如下:
*d = '\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);
}
复制代码
作者:
qddnovo
时间:
2014-6-8 10:40
谢谢哈。。。。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2