返回信息流#include <stdio.h>
#include <string.h>
void main()
{
char *p[5]={"china","japan","korea","egypt","nepal"};
int i,j;
char *temp,a[6];
temp=a;
for(i=0;i<4;i++)
for(j=0;j<5-i;j++)
if(strcmp(p[i],p[i+1])>0)
{
strcpy(temp,p[i]);
strcpy(p[i],p[i+1]);
strcpy(p[i+1],temp);
}
printf("the sequence is:\n");
for(i=0;i<5;i++)
printf("%s\n",*(p+i));
}
这个程序在tc中可以运行,在vc或者vs中编译无错,可是总是运行不了,请问是什么情况?
这是一条镜像帖。来源:北邮人论坛 / cpp / #46898同步于 2010/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求教大虾们一个c的简单问题
hero00jeck
2010/11/26镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 nevermadao 的大作中提到: 】
: 究竟实现什么功能?
: --
用冒泡法比较字符串的大小,这个程序本身很简单,现在关键是运行时自动停止,可能是指针哪里出现错误。
首先如果release的话,应该会access error
你的p这个数组里的5个指针都指向数据段,也就是所谓的原生字符串,这种地方是不允许写,strcpy以p[i]为目的肯定失败,触发异常
另外console程序,直接双击肯定是结束,运行完了cmd就结束了
需要打开cmd,然后在里面用命令行运行这个程序
额, 之前也碰到过这样的事,可以这样修改:
char p[5][6]={"china","japan","korea","egypt","nepal"};改成这个试试,貌似不是冒泡吧.....
if(strcmp(p[j],p[j+1])>0)
{
strcpy(temp,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],temp);
}
内层循环里的判断应该是这样的,囧
vs2005下验证后,没问题
VC2005 运行报错,错误原因是:
[QUOTE]
首先如果release的话,应该会access error
你的p这个数组里的5个指针都指向数据段,也就是所谓的原生字符串,这种地方是不允许写,strcpy以p[i]为目的肯定失败,触发异常
【 在 hero00jeck 的大作中提到: 】
: #include <stdio.h>
: #include <string.h>
: void main()
: ...................
[/QUOTE]