首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求大神帮忙见见这个代码

2013-07-09 
求大神帮忙看看这个代码题目是:输入一个字符串,内有数字和非数字,如:asndjkas2121dnj12?dej,将其中连续的

求大神帮忙看看这个代码
题目是:输入一个字符串,内有数字和非数字,如:asndjkas2121dnj12?dej,
将其中连续的数字作为一个整数,统计共有多少个整数,并输出这些数


请大家帮帮忙看看这个代码为什么运行起来会出错
#include<stdio.h>
void main()
{
void xuan(char*);
char str[80];
gets(str);
xuan(str);
}
void xuan(char*p)
{
int i=0,n,j=0,k=0;
char a[20][20];
for(;*p!='\0';p++)
{
if(*p>='0'&&*p<='9')
{
k=1;
a[i][j]=*p;
j++;
}
else k=0;
if(*(p-1)>='0'&&*(p-1)<='9'&&k==0)
{
i++;
}
}
printf("有%d个整数\n分别为:",i+1);
for(n=0;n<=i;n++)
{
for(j=0;a[n][j]!='\0';j++)
{
printf("%d",*(*(a+n)+j));
}
printf("\t");
}
}




[解决办法]

#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.

[解决办法]
#include<stdio.h>

void xuan(char*);



int main(void)
{
char str[80];
fgets(str, sizeof(str), stdin);
xuan(str);

return 0;
}
void xuan(char*p)
{
int i=0,n,j=0,k=0;
char a[20][20];
//for (i = 0; i < 20; i++)    //在这儿初始化,就不用在下面保存字符结束标识了
//{
//memset(a[i], 0, 20);
//}
for(; *p != '\0'; p++)
{
if(*p >= '0' && *p <= '9')
{
//k = 1;
a[i][j] = *p;
j++;
continue;
}
else 
{
//if (k == 1)
//{
a[i][j] = 0;   //字符结束标志
if (j != 0)    //标识有数字
{
i++;
}
j = 0;
//}
//k = 0;
}
//if(*(p-1) >= '0' &&*(p-1) <= '9'&& k == 0)
//{
//i++;
//}
//j = 0;
}
printf("有%d个整数\n分别为:",i+1);
for(n = 0; n <= i; n++)
{
for(j = 0; a[n][j] != '\0'; j++)
{
printf("%c", *(*(a+n)+j));
}
printf("\t");
}
printf("\n");
}

热点排行