标题:n=strlen(a)为什么不可用?
只看楼主
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
 问题点数:0 回复次数:13 
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 
2007-08-22 07:29
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 

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

行不行呀


惟有学习不断的学习!
2007-08-22 08:03
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
得分:0 
回复:(zzxwill)n=strlen(a)为什么不可用?
try to add the string terminator before n=strlen(a):

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

I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-22 08:32
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 
以下是引用HJin在2007-8-22 8:32:01的发言:
try to add the string terminator before n=strlen(a):

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

那我那行不行呢?我在网吧就没有调试了


惟有学习不断的学习!
2007-08-22 08:35
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
得分:0 
while((c=getchar())!='\n'){
a[i]=c;
i++;
}
a[i] = '\0';


在字符数组输入完后加字符串结束标志'\0',要不你就用gets(a); 又快又不容易出错

2007-08-22 11:05
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
得分:0 
nwpu063417
你说得对!的确很好!

lishizelibin
我再试试你的~~谢谢~

一分耕耘,一分收获。
2007-08-23 09:08
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
得分:0 
lishizelibin
你的不行吧?可能我没理解正确~~

一分耕耘,一分收获。
2007-08-23 09:11
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 

哦,我也想知道那也对不对,我也是想问问,记得strcpy用后,不清楚\0是不是在新数组自动加和还是把原来有‘\0’的复制到新数组


你能把你试我的那段代码贴出来么?

把那本陈旧的c语言书要拿出看看了,不经常用就忘了

[此贴子已经被作者于2007-8-23 9:34:03编辑过]


惟有学习不断的学习!
2007-08-23 09:16
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 
查了一下,会自加\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); 这一步也有问题。

}


惟有学习不断的学习!
2007-08-23 09:52
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
回复:(lishizelibin)查了一下,会自加\\0,那我就不...
strcpy的实现方式中也是以'\0'跳出复制循环的
2007-08-23 14:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-164474-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.162459 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved