题:
代码:
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是什么意思,求助!
-------------------------------------------------------------------------------------------------
知道了,谢谢。。。指针这里真的没学得好乱= - =
首先,我想问下,你的代码里为什么没有给 s1,s2分配内存。这样能行?
其次,你写的函数,应该主动追加 null-terminator;
如果要用指针录入字符串,应该先动态申请空间吧!要不就改为数组吧。应该是这样奥