新手求助,求大虾帮忙~
题目是:输入三个字符串,安由小到大的顺序输出。代码编译无错误无警告,但运行出来是空白窗口,并弹出应用程序错误的提示,求大家帮帮忙,小弟不甚感激~代码如下:
#include<stdio.h>
#include<string.h>
void main()
{
char str1[10]={"China"};
char str2[10]={"America"};
char str3[10]={"Australia"};
char *p1,*p2,*p3,temp;
p1=str1;p2=str2;p3=str3;
if(strcmp(str1,str2)>0){temp=*p1;*p1=*p2;*p2=temp;}
if(strcmp(str1,str3)>0){temp=*p1;*p1=*p3;*p3=temp;}
if(strcmp(str2,str3)>0){temp=*p2;*p2=*p3;*p3=temp;}
printf("%s,%s,%s\n",*p1,*p2,*p3);
}
[解决办法]
- C/C++ code
temp = new char[10];if(strcmp(str1,str2)>0){ memcpy(temp, p1, sizeof(char)*10); memcpy(p1, p2, sizeof(char)*10); memcpy(p2, temp, sizeof(char)*10);}
[解决办法]
char *p1,*p2,*p3,temp;//你的temp是char类型不是char*类型,
[解决办法]
不要意思看错了
[解决办法]
#include<stdio.h>
#include<string.h>
void main()
{
char str1[10]={"China"};
char str2[10]={"America"};
char str3[10]={"Australia"};
char *p1,*p2,*p3,*temp;
p1=str1;p2=str2;p3=str3;
if(strcmp(str1,str2)>0){temp=p1;p1=p2;p2=temp;}
if(strcmp(str1,str3)>0){temp=p1;p1=p3;p3=temp;}
if(strcmp(str2,str3)>0){temp=p2;p2=p3;p3=temp;}
printf("%s,%s,%s\n",*p1,*p2,*p3);
}
[解决办法]
#include<stdio.h>
#include<string.h>
int main()
{
char str1[10]={"China"};
char str2[10]={"America"};
char str3[10]={"Australia"};
char *p1,*p2,*p3,*temp;
p1=str1;p2=str2;p3=str3;
if(strcmp(p1,p2)>0){temp=p1;p1=p2;p2=temp;}
if(strcmp(p1,p3)>0){temp=p1;p1=p3;p3=temp;}
if(strcmp(p2,p3)>0){temp=p2;p2=p3;p3=temp;}
printf("%s,%s,%s\n",p1,p2,p3);
}
这是修改以后的代码,你可以参考一下。你的思路是对的,但是你的方法并不能实现你想要的结果。还有,你的输出为什么要叫上*呢。你输出的是字符串,参数应该是地址才行。
仅供参考吧……