strcpy出啥错 调试出 说明理由全分

wyqiang 2006-02-22 11:26:41
/*
* 2.排序

* 假如已有如下字符串数组,
* char *ppszStrings[] = {"wave", "car", "for", "extern", "abc", "do", "123"};
* 请使用冒泡排序法按照升序排序后,仍然放置到ppszStrings中。
*/


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void bubble_select(char *ppszStrings[],int n)
{
//char space[6];
char *maxpointer=NULL;
char *minpointer=NULL;
char *tmppointer=NULL ;
for(int i=0;i<n;i++)
{
maxpointer=ppszStrings[i];
puts(maxpointer);
printf("\nhello %d",i);
printf("\n");
for(int j=i+1;j<n;j++)
{
minpointer=ppszStrings[j];
printf(minpointer);
printf("\t");
//printf("here %d\t",j);

if(strcmp(maxpointer,minpointer)<0)
{
//puts(tmppointer);
//puts(minpointer);
//puts(maxpointer);
strcpy(tmppointer,minpointer);
strcpy(minpointer,maxpointer);
strcpy(maxpointer,tmppointer);
}
}
printf("\n");
// strcpy(ppszStrings[i],maxpointer);
}
/*print the datastructpointer*/
for(i=0;i<7;i++)
puts(ppszStrings[i]);
}


void main()
{
int n=7;
char *ppszStrings[] = {"wave", "car", "for", "ext", "abc", "do", "123"};
// puts("here");
bubble_select(ppszStrings,n);
}

...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cunsh 2006-02-23
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void bubble_select(char *ppszStrings[],int n)
{
char *tmppointer=NULL;;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(ppszStrings[i],ppszStrings[j])>0)
{
tmppointer = ppszStrings[i];
ppszStrings[i] = ppszStrings[j];
ppszStrings[j] = tmppointer;
}
}
}
/*print the datastructpointer*/
for(i=0;i<7;i++)
puts(ppszStrings[i]);
}


void main()
{
int n=7;
char *ppszStrings[] = {"wave", "car", "for", "ext", "abc", "do", "123"};
// puts("here");
bubble_select(ppszStrings,n);
}
du51 2006-02-23
  • 打赏
  • 举报
回复
MY GOD...都大腕儿...来晚了..
0黄瓜0 2006-02-23
  • 打赏
  • 举报
回复
楼上的程序思路是:交换数组中的字符串指针,而不是象楼主那样交换它们的存储位置(因为这些串是常量串,不能更改,所以你想交换也不行)。
junguo 2006-02-22
  • 打赏
  • 举报
回复
你的思路也不对!char *ppszStrings[] = {"wave", "car", "for", "ext", "abc", "do", "123"};分配的空间也是固定大小的,你需要重新分配空间的.
晨星 2006-02-22
  • 打赏
  • 举报
回复
你把
char *tmppointer=NULL ;
改成
char tmppointer[32];
试试看。
junguo 2006-02-22
  • 打赏
  • 举报
回复
你的tmppointer都没有分配空间,直接往NULL上拷贝,当然会错!
晨星 2006-02-22
  • 打赏
  • 举报
回复
strcpy(tmppointer,minpointer);
你的maxpointer和minpointer倒是分别指向了有效的位置,可是tmppointer却根本还没有空间,怎么就直接往里考贝东西?

64,674

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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