首页 新闻 会员 周边 捐助

一道作业题,附题和我的代码,求助问题出在哪里

0
悬赏园豆:30 [已解决问题] 解决于 2015-05-10 02:38

题:

代码:

 1 //main.cpp
 2 
 3 #include<stdio.h>
 4 #include<string.h>
 5 int m;
 6 char *s1,*s2;
 7 int main()
 8 {
 9  void change_sort(char *s1,int m,char *s2);
10  int i;
11 
12  gets(s1);
13 
14  scanf("%d",&m);
15  change_sort(s1,m,s2);
16 
17  for(i=0;s2[i]!='\0';i++)
18     printf("%c",s2[i]);
19 
20  return 0;
21 }
 1 //function.cpp
 2 
 3 void change_sort(char *s1,int m,char *s2)
 4 {
 5  int i,j,k=0;
 6  char t;
 7  for(i=m-1,j=0;s1[i]!='\0';i++,j++)
 8   {
 9     s2[j]=s1[i];
10     k+=1;
11   }
12  for(i=0;i<k;i++)
13     for(j=0;j<k-i-1;j++)
14         if(s2[j]>s2[j+1])
15          {
16           t=s2[j];s2[j]=s2[j+1];s2[j+1]=t;
17          }
18 }

再建立prj文件,运行结果如下:

输入s1串→987654321,从第4个字符“6”开始,经函数处理

输出↓

 第4个以后的确实排了序,但为什么最后还会有321.。。还有Null pointer assignment是什么意思,求助!

 

-------------------------------------------------------------------------------------------------

 

知道了,谢谢。。。指针这里真的没学得好乱= - =

陈玩玩的主页 陈玩玩 | 初学一级 | 园豆:143
提问于:2015-05-08 22:02
< >
分享
最佳答案
0

首先,我想问下,你的代码里为什么没有给 s1,s2分配内存。这样能行?

其次,你写的函数,应该主动追加 null-terminator;

收获园豆:15
hoodlum1980 | 小虾三级 |园豆:573 | 2015-05-09 02:06
其他回答(1)
0

如果要用指针录入字符串,应该先动态申请空间吧!要不就改为数组吧。应该是这样奥

收获园豆:15
随风舞落 | 园豆:259 (菜鸟二级) | 2015-05-09 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册