c-C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错??

问题描述

C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错??

//题目:输出字符串里数字团,以及个数。比如89cy129
//就输出89,129,一共2个数。

代码在这个百度知道的问题上:well,看来百度知道上面没有人会做?
跪谢!!!

源代码:

include

int main()
{
int a[80],i=0,*pa,an=0;
char str[80],*pstr=str;
void getnum(char pstr);
gets(str);
getnum(*pstr);
}
void getnum(char *pstr)
{
int a[80],i=0,*pa,ndigit=0,digit=0;
char str[80];
for(i=0;
(pstr+i)!='';i++)
{
if(*(pstr+i)>='0'&&*(pstr+i)<='9')
digit=digit*10+(*(pstr+i)-48);
if(*(pstr+i)<'0'||*(pstr+i)>'9')
{
*pa=digit;
pa++;
ndigit++;
digit=0;
}
}
for(i=0;i<ndigit;i++)
printf("%d,",*pa);
}


解决方案

重复的问题,昨天不但回答你了,而且代码都写给你了。
谭浩强之流写的书错误百出,最好少看。

#include "stdio.h"
#include "stdlib.h"

int main()
{
    char s[] = "123ss456w7";
    int nShow = 1;
    for (int i = 0; i < (int)strlen(s); i++)
    {
        if (s[i] >= '0' && s[i] <= '9')
        {
            printf("%c", s[i]);
            nShow = 1;
        }
        else
        {
            if (nShow) printf("n");
            nShow = 0;
        }
    }
}

解决方案二:

国内人写的书建议不要看

解决方案三:

getnub传入参数写错了,不要前面的星号

解决方案四:

  1. void getnum(char pstr);
    A. 错误,正确的是:void getnum(char *pstr); *
    B. 这是函数声明,应该放在最上面,在main之前。
  2. 在函数 getnum 定义内
    A.指针pa没有初始化,指向任意的地方。
  3. 在 main 函数内,函数调用 getnum(*pstr);*
    A.函数调用参数类型错误。

    总之,很烂的代码

时间: 2024-10-28 06:37:13

c-C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错??的相关文章

指针-么么哒、这题用C语言为什么出现Segmentation fault,求解释并纠错(谢绝新代码)

问题描述 么么哒.这题用C语言为什么出现Segmentation fault,求解释并纠错(谢绝新代码) //依次输出字符串中的数字团,比如poq89ayu1u&129aa //就输出89,129,一共2个数. //萌妹纸诚心诚意求修改 include 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)!='';i++) { if('

c语言二叉树问题,代码不太理解,求大神解释,急

问题描述 c语言二叉树问题,代码不太理解,求大神解释,急 问题:A Binary Tree is called balanced if, for each node in the tree, the height of its left and right subtrees differ by no more than one. Write a function int height_if_balanced( Tnode *root ) which returns -1 if the tree

biginteger-Java中n!的代码看不懂啊,求解释

问题描述 Java中n!的代码看不懂啊,求解释 import java.math.BigInteger; import java.util.*; public class Main{ protected static ArrayList table = new ArrayList(); static { table.add(BigInteger.valueOf(1)); } public static synchronized BigInteger factorial(int x) { for

java web-这段代码看不懂啊,求解释

问题描述 这段代码看不懂啊,求解释 /s:iterator /s:iterator/sx:treenode/s:iterator </sx:treenode> </s:iterator> </sx:treenode> </s:iterator> 解决方案 <sx:tree label="%{#request.project.projectName}" id="parentId" > //项目名 <s:

c++-找到一段代码不知道什么意思,求解释代码

问题描述 找到一段代码不知道什么意思,求解释代码 #include #define DIST(X,Y,A,B) DA=(X)-(A);DB=(Y)-(B);D=std::sqrt(DA*DA+DB*DB);C=std::max(1.0-(D/H)*(D/H)*(D/H),0.0)*100.0f; double X=25.0f,Y=25.0f,R=0.1f,H=0.5f,RADC=0.45f,D=0.99f,G=-9.81f; int NRX=ceil(X/H),NRY=ceil(Y/H); st

c-我写的代码有什么错?求解释

问题描述 我写的代码有什么错?求解释 对于问题:给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和.我写的用C写的代码如下:#include #include int f(int iint a);int main(){ int an; long sum; scanf(""%d%d""&a&n); for(int i=1sum=0;i<=n;i++){ sum+=f(ia); //对于i的每次循环,调用f函数 } pr

c语言-这一步执行了多少次?求解释

问题描述 这一步执行了多少次?求解释 @算法大牛:设n为正整数.试确定下列各程序段中前置以记号@的语句的频度设n为正整数.试确定下列各程序段中前置以记号@的语句的频度: for(i=1; i<=n; i++) { for(j=1; j<=i; j++) { for(k=1; k<=j; k++) @ x += delta; } 答案是 (5) 1+(1+2)+(1+2+3)+...+(1+2+3+...+n), 看不懂,求解释?谢谢 解决方案 n=1时, 第一次外循环 整个循环体执行1次

新手求解答一下-新手求解释代码!!!

问题描述 新手求解释代码!!! 新手求解释代码!!!新手求解释代码!!!新手求解释代码!!! 解决方案 你先解释下为什么有注释还看不懂,以及为什么拍个照片只有代码的左半边.还有,请解释你希望怎么解释. 解决方案二: 这个代码,你好好的拍一下,看不清右边的,,你希望怎么解释,你哪一句不知道? 解决方案三: findStuByNum顾名思义,是根据学号去查询学生,第一步先创建学生对象stu.第二步把根据学号查询到的学生赋给stu.最后一步应该就是调用DataBase中的方法去删除学生,删除成功返回t

c语言编程-这段C程序设计语言书上的代码,运行后按回车只换行并没有输出最长的行,为什么

问题描述 这段C程序设计语言书上的代码,运行后按回车只换行并没有输出最长的行,为什么 #include#define MAXLINE 1000int getline(char line[]int maxline);void copy(char to[]char from[]);main(){int len;int max;char line[MAXLINE];char longest[MAXLINE];max = 0;while ((len = getline(lineMAXLINE))>0)i