当前位置: 代码迷 >> C语言 >> [求助]目的:输入一个含若干字符的字符串,分别找出其中的字母和数字(有代码)
  详细解决方案

[求助]目的:输入一个含若干字符的字符串,分别找出其中的字母和数字(有代码)

热度:443   发布时间:2007-08-24 20:57:46.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);
}

搜索更多相关的解决方案: 字母  字符  数字  目的  代码  

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

#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编辑过]


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

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

#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编辑过]


----------------解决方案--------------------------------------------------------
scanf("%f",c);??
\0是不被输出的,一般会自动加\0,字符串结束标志
你用谭浩强的书吧,说明你那段没看完

----------------解决方案--------------------------------------------------------
scanf("%c",c);不可以这样整体读入吗?
不可以,用%s,自己修改啦
还有这好象基本是一个问题
什么叫基本好象是一个问题?
你看的是对的

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

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

#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);
}


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

you can also use

isdigit() and isalpha()


----------------解决方案--------------------------------------------------------
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++;
这段改为这样看看,建议多自己思考
----------------解决方案--------------------------------------------------------
  相关解决方案