标题:[求助]目的:输入一个含若干字符的字符串,分别找出其中的字母和数字(有代码)
只看楼主
frebir
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-24
 问题点数:0 回复次数:7 
[求助]目的:输入一个含若干字符的字符串,分别找出其中的字母和数字(有代码)

目的是输入一个含若干字符的字符串,分别找出其中的字母和数字,其他的忽略.
下面是我写的代码.能运行,就是结果一点关系都没有!晕~~~初学,用的数组.大家帮忙看看,小弟谢过.

#include<stdio.h>
main()
{
char c[40],c1[20],c2[20];
int i=0,j=0,k=0;
printf("input a str:\n");
scanf("%c",c);
while(c[i]!='\0')
{
if(48<c[i]<57)
c1[j]=c[i];j++;
if((64<c[i]<91)&&(96<c[i]<123))
c2[k]=c[i];k++;
i++;
}
c1[j]='\0';
c2[k]='\0';
printf("%c\n",c1);
printf("%c\n",c2);
}

搜索更多相关主题的帖子: 字母 字符 数字 目的 代码 
2007-08-24 20:57
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
得分:0 

#include<stdio.h>
main()
{
char c[40],c1[20],c2[20];
int i=0,j=0,k=0;
printf("input a str:\n");
scanf("%c",c);//你根本没有取字符串,你只去了第一个字符吧 %s
while(c[i]!='\0')
{
if(48<c[i]<57)
c1[j]=c[i];j++;
if((64<c[i]<91)&&(96<c[i]<123))
c2[k]=c[i];k++;
i++;
}
c1[j]='\0';
c2[k]='\0';
printf("%c\n",c1);//这就不对了,你要输出的是字符串,可以用puts
printf("%c\n",c2);

这是什么呀,字符数组首地址,当然不对了,你输出的是地址了
}

[此贴子已经被作者于2007-8-24 21:10:42编辑过]


You have lots more to work on! Never give up!c language!
2007-08-24 21:08
frebir
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-24
得分:0 

可能是这了,我的想法是:

#include<stdio.h>
main()
{
char c[40],c1[20],c2[20];
int i=0,j=0,k=0;
printf("input a str:\n");
scanf("%c",c);不可以这样整体读入吗?
while(c[i]!='\0')
{
if(48<c[i]<57)
c1[j]=c[i];j++;
if((64<c[i]<91)&&(96<c[i]<123))
c2[k]=c[i];k++;
i++;
}
c1[j]='\0';
c2[k]='\0';
printf("%c\n",c1);
printf("%c\n",c2);还有这好象基本是一个问题.

}
我看的书上有这么一段,你看看:
用scanf()的%s格式赋值:
char c[20];
scanf("%f",c);
当在键盘上输入Beijing<回车>时c数组中自动包含一个以'\0'结尾的字符串"Beijing".

用printf()的"%s"进行字符串的输出,例如:
char c[20]={"Beijing"};
printf("%s".c);

你在看下是不是我理解错了呢 ?

[此贴子已经被作者于2007-8-24 22:12:53编辑过]

2007-08-24 22:12
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
得分:0 
scanf("%f",c);??
\0是不被输出的,一般会自动加\0,字符串结束标志
你用谭浩强的书吧,说明你那段没看完

You have lots more to work on! Never give up!c language!
2007-08-24 22:16
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
得分:0 
scanf("%c",c);不可以这样整体读入吗?
不可以,用%s,自己修改啦
还有这好象基本是一个问题
什么叫基本好象是一个问题?
你看的是对的

You have lots more to work on! Never give up!c language!
2007-08-24 22:23
frebir
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-24
得分:0 

回楼上 我的意思是二楼时你指出的两个有问题的地方出的好象是同一个问题啦 别误会!人总是要慢慢成长的嘛,开始犯点愚蠢的错误还是可以体谅的,哈哈
我给改成这样子了 但运行出来的两个结果都跟输入的一样!郁闷!!~~看来是程序的逻辑有大问题啊,我再好好研究吧,毕竟知识还太少.谢谢楼上了.
要是哪位有时间和经历就帮忙在我这个的基础上改改哈.我在下感激不禁

#include<stdio.h>
main()
{
char c[40],c1[20],c2[20];
int i=0,j=0,k=0;
printf("input a str:\n");
scanf("%s",c);
while(c[i]!='\0')
{
if(48<c[i]<57)
c1[j]=c[i];j++;
if((64<c[i]<91)&&(96<c[i]<123))
c2[k]=c[i];k++;
i++;
}
printf("%s\n",c1);
printf("%s\n",c2);
}

2007-08-24 22:58
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
得分:0 

you can also use

isdigit() and isalpha()


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-24 23:04
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
得分:0 
if(48<c[i]<57)
{ c1[j]=c[i];
j++;
}
if((64<c[i]<91)||(96<c[i]<123))
{c2[k]=c[i];
k++;
}
i++;
这段改为这样看看,建议多自己思考

You have lots more to work on! Never give up!c language!
2007-08-24 23:05



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




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

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