#include<stdio.h>
#include<string.h>
//字符排序。
main()
{
char c,ch,a[80];
int i,n,j;
i=0;
while((c=getchar())!='\n'){
a[i]=c;
i++;
}
// n=i;
n=strlen(a);
//n=strlen(a)为什么不可用?
for(i=0;i<n;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1]){
ch=a[j];
a[j]=a[j+1];
a[j+1]=ch;
}
for(i=0;i<n;i++)
printf("%c",a[i]);
puts(a);
//用了上面的n=strlen(a); 这一步也有问题。
}
----------------解决方案--------------------------------------------------------
再定义个数组p[80]
令p=a(strcpy)
然后n=strlen(p)
行不行呀
----------------解决方案--------------------------------------------------------
if(i<80)
a[i]='\0';
----------------解决方案--------------------------------------------------------
try to add the string terminator before n=strlen(a):
if(i<80)
a[i]='\0';
那我那行不行呢?我在网吧就没有调试了
----------------解决方案--------------------------------------------------------
while((c=getchar())!='\n'){
a[i]=c;
i++;
}
a[i] = '\0';
在字符数组输入完后加字符串结束标志'\0',要不你就用gets(a); 又快又不容易出错
----------------解决方案--------------------------------------------------------
nwpu063417
你说得对!的确很好!
lishizelibin
我再试试你的~~谢谢~
----------------解决方案--------------------------------------------------------
lishizelibin
你的不行吧?可能我没理解正确~~
----------------解决方案--------------------------------------------------------
哦,我也想知道那也对不对,我也是想问问,记得strcpy用后,不清楚\0是不是在新数组自动加和还是把原来有‘\0’的复制到新数组
你能把你试我的那段代码贴出来么?
把那本陈旧的c语言书要拿出看看了,不经常用就忘了
[此贴子已经被作者于2007-8-23 9:34:03编辑过]
----------------解决方案--------------------------------------------------------
查了一下,会自加\0,那我就不明白你试了不行?
#include<stdio.h>
#include<string.h>
//字符排序。
main()
{
char c,ch,a[80],b[81];
int i,n,j;
i=0;
while((c=getchar())!='\n'){
a[i]=c;
i++;
}
///* strcpy(b,a);
n=strlen(b); *///为什么不对呀?,下面的a 可换成b
for(i=0;i<n;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1]){
ch=a[j];
a[j]=a[j+1];
a[j+1]=ch;
}
for(i=0;i<n;i++)
printf("%c",a[i]);
puts(a);
//用了上面的n=strlen(a); 这一步也有问题。
}
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------