简单的小程序编译通不过,那位老大帮我改正一下,谢谢。

z4b 2006-03-01 11:03:34
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
char *src = "hello,world";
char *dest = NULL;
int len = strlen(src);
dest = (char*)malloc(len+1);/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */
char *d = dest;
char *s = src[len-1]; /* char* s = src[len-1]; ,使s指向尾字母*/

/* len /=2; 循环次数为长度一半 */

while(len--!=0)
*(d++) = *(s--); /* *(d++)=*(s--); 交换字符 */
printf("%s",dest);

free(dest); /* 使用完,应当释放空间,以免造成内存汇泄露 */

return 0;
}
...全文
187 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ytfrdfiw 2006-03-02
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
char *src = "hello,world";
char *dest = NULL;
int len = strlen(src);

dest = (char*)calloc(len + 1,sizeof(char));/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */

char *d = dest;
char *s = &src[len - 1]; /* char* s = src[len-1]; ,使s指向尾字母*/

/* len /=2; 循环次数为长度一半 */

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

printf("%s",dest);

free(dest); /* 使用完,应当释放空间,以免造成内存汇泄露 */

return 0;
}
回复
iamhuhu 2006-03-02
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
char *src = "hello,world";
char *dest,*d,*s;
int len = strlen(src);
dest = (char*)malloc(len+1);/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */
d = dest;
s = &src[len-1]; /* char* s = src[len-1]; ,使s指向尾字母*/

/* len /=2; 循环次数为长度一半 */

while(len--!=0)
*(d++) = *(s--); /* *(d++)=*(s--); 交换字符 */
printf("%s",dest);

free(dest); /* 使用完,应当释放空间,以免造成内存汇泄露 */

return 0;
}
回复
digifish 2006-03-02
很简单的问题.在C语言中,数据的声明必须放在所有的付值语句之前。

dest = (char*)malloc(len+1);/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */
char *d = dest;
char *s = src[len-1]; /* char* s = src[len-1]; ,使s指向尾字母*/

改成:
char *d = dest;
char *s = src[len-1]; /* char* s = src[len-1]; ,使s指向尾字母*/
dest = (char*)malloc(len+1);/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */
回复
wcg_jishuo 2006-03-02
谢谢各位,lz可以调试通过了吗?
回复
tukidrmyd 2006-03-02
/*可以看出程序是在VC下调试的,第一个错误在于定义‘S’指针时类型不匹配,第二个错误在于在生成的第二个数组的结尾就应该有一个“NULL”来标志这个数组结束,不然的话就会有几个乱码出来*/

#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
char *src = "hello,world";
char *dest = NULL;
int len = strlen(src);
dest = (char*)malloc(len+1);/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */
char *d = dest;
char *s = &src[len-1]; /* char* s = src[len-1]; ,使s指向尾字母*/

/* len /=2; 循环次数为长度一半 */

while(len--!=0)
*(d++) = *(s--); /* *(d++)=*(s--); 交换字符 */
*(d++)=NULL;/*生成的第二个数组的结尾就当有一个为空以示结束!*/


printf("%s",dest);

free(dest); /* 使用完,应当释放空间,以免造成内存汇泄露 */

return 0;
}
回复
0黄瓜0 2006-03-01
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
char *src = "hello,world";
char *dest = NULL;
int len = strlen(src);
dest = (char*)malloc(len+1);/* dest=(char*)malloc(len+1); 应当多分配一个字节,存放尾部的'\0'字符。 */
char *d = dest;
char *s = &src[len-1];
//char *s = src+len-1;//两种形式都要得
while(len--!=0)
*(d++) = *(s--);
*d='\0';/* 这句不能少*/
printf("%s\n",dest);

free(dest); /* */

return 0;
}
回复
vcmute 2006-03-01
char *s = src+len-1;
回复
ma100 2006-03-01
char *s = &src[len-1];
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.4w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2006-03-01 11:03
社区公告
暂无公告