编译器问题???

pro21ms4 2005-11-09 09:16:14
/*为什么下面的程序,在TC上没问题,在DEV C++中能通过编译而运行时有错误*/
#include <stdio.h>
#include <string.h>
#define N 20
void swap(char *p1, char *p2);
int main()
{
char *a[N], *b[N], *c[N];
printf("Pls input string:\n");
scanf("%s", a);
scanf("%s", b);
scanf("%s", c);
if(strcmp(a, b)>0)swap(a, b);
if(strcmp(b, c)>0)swap(b, c);
if(strcmp(a, c)>0)swap(a, c);

printf("after being sorted:\n");
printf(" %s\n %s\n %s\n", a, b, c);

system("pause");
return 0;
}

void swap(char *p1, char *p2)
{
char *temp;
strcpy(temp, p1);
strcpy(p1, p2);
strcpy(p2, temp);
}
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Michael_555 2005-11-14
  • 打赏
  • 举报
回复
在TC上没问题吗,我怀疑……
pro21ms4 2005-11-13
  • 打赏
  • 举报
回复
楼上的正解,只是可能编译器的所用的标准不同。TC确实有点老了。
Flood1984 2005-11-10
  • 打赏
  • 举报
回复
象这种情况一般说明第二种编译器比第一种检测更严格!
屋顶上的老猫 2005-11-10
  • 打赏
  • 举报
回复
指针数组,错!
sankt 2005-11-09
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

#define N 20

void swap(char *p1, char *p2);

int main()
{
char a[N], b[N], c[N];
printf("Pls input string:\n");
scanf("%s", a);
scanf("%s", b);
scanf("%s", c);

if(strcmp(a, b)>0)swap(a, b);

if(strcmp(b, c)>0)swap(b, c);

if(strcmp(a, c)>0)swap(a, c);

printf("after being sorted:\n");
printf(" %s\n %s\n %s\n", a, b, c);


return 0;
}

void swap(char *p1, char *p2)
{
char temp[N];
strcpy(temp, p1);
strcpy(p1, p2);
strcpy(p2, temp);
}
herryhuang 2005-11-09
  • 打赏
  • 举报
回复
char *temp;
strcpy(temp, p1);

temp没有分配空间
还有应该去掉abc定义中的*
llf_hust 2005-11-09
  • 打赏
  • 举报
回复
scanf("%s", a);//指针没有分配空间
scanf("%s", b);
scanf("%s", c);

69,368

社区成员

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

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