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

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;
}
...全文
211 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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'字符。 */
AIGPTchina 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];

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧