输入一个字符串,内有数字和非数字字符 如a123x4 将连续的数字作为一个元素放入数组
如果字符串连续输入两个字符的话 为什么b = 0不会被放到整形数组中? 把代码贴上来 人造人 发表于 2017-4-21 12:18把代码贴上来
#include <stdio.h>
void main()
{
void sum(char *p);
char s,*p=s;
gets(s);
sum(p);
}
void sum(char*p)
{
int a,i,j=0,b=0;
for(i=0;*(p+i)!='\0';i++)
{
if(*(p+i)>='0'&&*(p+i)<='9')
{
b=*(p+i)-48+b*10;
if(*(p+i+1)<'0'||*(p+i+1)>'9')
{
a=b;
j++;
b=0;
}
}
}
for(i=0;i<j;i++)
printf("%d ",a);
printf("\n");
} 不明白你想问什么
我写了一个类似的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **get_string(char *str)
{
char buf;
int index = 0;
char **ret = NULL;
int ret_point_count = 0;
while(1)
{
while(*str <= '0' || *str >= '9')
{
if(*str == '\0') goto e;
str++;
}
index = 0;
while(*str >= '0' && *str <= '9') buf = *str++;
buf = '\0';
ret_point_count++;
ret = realloc(ret, sizeof(char **) * ret_point_count);
ret = malloc(strlen(buf) + 1);
strcpy(ret, buf);
}
e:
ret_point_count++;
ret = realloc(ret, sizeof(char **) * ret_point_count);
ret = NULL;
return ret;
}
int main(void)
{
char s;
char **str_arr;
fgets(s, 50, stdin);
str_arr = get_string(s);
for(int i = 0; str_arr != NULL; i++)
{
puts(str_arr);
}
return 0;
}
123qwer4567sdfg567rtyufgh6789tyu5678
123
4567
567
6789
5678
请按任意键继续. . .
页:
[1]