2 avirl108 avirl108 于 2015.06.08 21:20 提问

么么哒!C题为什么出现Segmentation fault,求修改(求修改我的代码,但谢绝新代码)
//就输出89,129,一共2个数。 
# include<stdio.h>
int main()
{
    char str[80],*pstr;
    int i=0,flag=1,num=0;
    *pstr=str;
    gets(str);
    while(flag==1)
        {
        for(i=0;*(str+i)!='\0';i++)
            {
            if('0'<=*(str+i)&&*(str+i)<='9')
            num=num+(*(str+i)-48);
            }
        flag=0;

        while(flag==0)  
                    {
                    printf("%d,",num);
                    flag=1;
                    }
        }
getch();
}


11个回答

caozhy
caozhy   Ds   Rxr 2015.06.08 21:51
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[80],*pstr;
    int i=0,flag=0,num=0;
    pstr=str;
    gets(str);
    for(i=0;*(str+i)!='\0';i++)
    {
        if('0'<=*(str+i)&&*(str+i)<='9')
        {
            flag = 1;
            num=num*10+(*(str+i)-48);
        }
        else
        {
            if (flag == 1)
            {
                printf("%d,",num);
                flag = 0;
                num = 0;
            }
        }
    }
    printf("%d",num);
    getchar();
}

sinat_28869145
sinat_28869145   2015.06.08 22:35

头文件是不是要加上
#include

sinat_28869145
sinat_28869145   2015.06.08 22:37

头文件加#include

a1193561652
a1193561652   Rxr 2015.06.09 01:12

getch()函数在conio.h中。

wsh1992o
wsh1992o   Rxr 2015.06.09 08:52

产生了非法的内存使用

VisualEleven
VisualEleven   Ds   Rxr 2015.06.09 11:02
#include "stdafx.h"

#include <stdio.h>
#include <conio.h>

int main()
{
    char str[80] = {0}, *pstr = NULL;
    int i=0,flag=1,num=0;
    pstr=str;
    gets(str);
    while(flag==1)
    {
        for(i=0;*(str+i)!='\0';i++)
        {
            if('0'<=*(str+i)&&*(str+i)<='9')
                num=num+(*(str+i)-48);
        }
        flag=0;

        while(flag==0)  
        {
            printf("%d,",num);
            flag=1;
        }
    }
    getch();
} 
VisualEleven
VisualEleven   Ds   Rxr 2015.06.09 11:43
 #include "stdafx.h"

#include <stdio.h>
#include <conio.h>

int main()
{
    char str[80] = {0};
    gets(str);
    char* pstr=str;

    for(;*pstr != '\0'; ++pstr)
    {
        bool flag = false;
        char ch = *pstr;
        if(('0' <= ch) && ('9' >= ch))
        {
            flag = true;
            printf("%c", ch);
        }
        if(flag)
        {
            ch = *(++pstr);
            if(ch != '\0')
            {
                if(('0' <= ch) && ('9' >= ch))
                {
                    printf("%c", ch);
                }
                else
                    printf(",");
            }
        }
    }
    getch();
}
Sucky
Sucky   2015.06.09 17:24

没有明白你要做什么,这个是一个无限循环,另标准C(c99)中“*pstr=str;”这一句一般都是有问题的,字符串不支持这样赋值

Sucky
Sucky   2015.06.09 17:28

页面太烂了,点击没有反应,反应过来这么多

fcxxxer
fcxxxer   2015.06.09 18:54

你访问了非法内存,所以会有这种情况。

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片