C语言新手上路,大佬帮帮忙呗
编写一个函数,把字符串中的数字字符、英文字母字符和其它字符分开。如对于字符串“12a:?3b*yu98!”,将其分解为三个独立的字符串“12398”、“abyu”和“:?*!”。要求以指针作为函数参数,主函数输入原字符串,分解后的三个字符串在主函数打印输出。思路:判断输入的字符的ascii,如果是a-z或者A-Z弄到一个数组,0-9弄到另一个数组,其他弄到第三个数组,然后打印 代码仅供参考
#include<stdio.h>
int main()
{
char s,a,b,c;
int i,j,k,l,n;
scanf("%s",s);
i=j=k=l=0;
while(s!='\0')
{
if((s>='a'&&s<='z')||(s>='A'&&s<='Z'))
{
a=s;
}
else if(s>='0'&&s<='9')
{
b=s;
}
else
{
c=s;
}
i++;
}
a=b=c='\0';
printf("%s\n%s\n%s\n",a,b,c);
return 0;
} #include<stdio.h>
#include <ctype.h>
enum type {
DIGIT,
ALPHA,
OTHER
};
char *get_substr(char *str, char *substr, int op);
int main()
{
char str, substr;
scanf("%s", str);
printf("%s\n", get_substr(str, substr, DIGIT));
printf("%s\n", get_substr(str, substr, ALPHA));
printf("%s\n", get_substr(str, substr, OTHER));
return 0;
}
char *get_substr(char *str, char *substr, int op)
{
char *tmp = substr;
switch (op) {
case DIGIT:
while (*str) {
if (isdigit(*str))
*tmp++ = *str++;
else
str++;
}
break;
case ALPHA:
while (*str) {
if (isalpha(*str))
*tmp++ = *str++;
else
str++;
}
break;
case OTHER:
while (*str) {
if (isalpha(*str) || isdigit(*str))
str++;
else
*tmp++ = *str++;
}
break;
}
*tmp = 0;
return substr;
}
页:
[1]