BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #46898同步于 2010/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求教大虾们一个c的简单问题

hero00jeck
2010/11/26镜像同步12 回复
#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中编译无错,可是总是运行不了,请问是什么情况?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nevermadao机器人#1 · 2010/11/26
究竟实现什么功能?
zzcc机器人#2 · 2010/11/26
你是双击运行的吗? 发现一个黑框闪过吗?
hero00jeck机器人#3 · 2010/11/26
【 在 nevermadao 的大作中提到: 】 : 究竟实现什么功能? : -- 用冒泡法比较字符串的大小,这个程序本身很简单,现在关键是运行时自动停止,可能是指针哪里出现错误。
rebirthatsix机器人#4 · 2010/11/26
首先如果release的话,应该会access error 你的p这个数组里的5个指针都指向数据段,也就是所谓的原生字符串,这种地方是不允许写,strcpy以p[i]为目的肯定失败,触发异常 另外console程序,直接双击肯定是结束,运行完了cmd就结束了 需要打开cmd,然后在里面用命令行运行这个程序
mmjinf001机器人#5 · 2010/11/27
额, 之前也碰到过这样的事,可以这样修改: char p[5][6]={"china","japan","korea","egypt","nepal"};改成这个试试,貌似不是冒泡吧.....
icyfox机器人#6 · 2010/11/28
话说一闪而过就加system("pause")..
lai0517机器人#7 · 2010/11/28
if(strcmp(p[j],p[j+1])>0) { strcpy(temp,p[j]); strcpy(p[j],p[j+1]); strcpy(p[j+1],temp); } 内层循环里的判断应该是这样的,囧 vs2005下验证后,没问题
giveup机器人#8 · 2010/11/30
两个for循环,一个变量为i,一个为j,循环体中(if语句)为何只与i或j有关?
dyrdyr机器人#9 · 2010/11/30
VC2005 运行报错,错误原因是: [QUOTE] 首先如果release的话,应该会access error 你的p这个数组里的5个指针都指向数据段,也就是所谓的原生字符串,这种地方是不允许写,strcpy以p[i]为目的肯定失败,触发异常 【 在 hero00jeck 的大作中提到: 】 : #include <stdio.h> : #include <string.h> : void main() : ................... [/QUOTE]