当前位置: 代码迷 >> C语言 >> n=strlen(a)为什么不可用?
  详细解决方案

n=strlen(a)为什么不可用?

热度:898   发布时间:2007-08-22 07:29:28.0
n=strlen(a)为什么不可用?

#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); 这一步也有问题。

}

搜索更多相关的解决方案: strlen  

----------------解决方案--------------------------------------------------------

再定义个数组p[80]
令p=a(strcpy)
然后n=strlen(p)

行不行呀


----------------解决方案--------------------------------------------------------
回复:(zzxwill)n=strlen(a)为什么不可用?
try to add the string terminator before n=strlen(a):

if(i<80)
a[i]='\0';

----------------解决方案--------------------------------------------------------
以下是引用HJin在2007-8-22 8:32:01的发言:
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); 这一步也有问题。

}


----------------解决方案--------------------------------------------------------
回复:(lishizelibin)查了一下,会自加\\0,那我就不...
strcpy的实现方式中也是以'\0'跳出复制循环的
----------------解决方案--------------------------------------------------------
  相关解决方案