c语言错误error

Python08

c语言错误error,第1张

#include <stdio.h>

#include <stdlib.h>

#define maxsize 100

typedef char datatype

typedef struct      /*定义*/

{

    datatype data[maxsize]

    int top

} seqstack

 seqstack* init_seqstack(seqstack *s)  /*初始化*/

{

    s=(seqstack*)malloc(sizeof(seqstack))

    s->top=-1

    return s

}

int empty_seqstack(seqstack *s)  /*判栈空*/

{

    if(s->top=-1) return 1

    else return 0

}

datatype get_seqstack(seqstack *s)   /*取栈顶元素*/

{

    if(s->top==-1) printf("栈空,取元素失败\n")

    else return(s->data[s->top])

}

seqstack *push_seqstack(seqstack *s, datatype x)  /*入栈*/

{

    if(s->top==maxsize-1)  //分号去掉

    {

        printf("上溢\n")

        return 0

    }

    else

    {

        s->top++

        s->data[s->top]=x

        return s

    }

}

seqstack * pop_seqstack(seqstack *s, datatype y)  /*出栈*/

{

    if(s->top<0)

    {

        printf("下溢\n")

        return 0

    }

    else

    {

        y=s->data[s->top]

        s->top--

        return s

    }

}

void show(seqstack *s)

{

    while(s->top>=0)

    {

      printf("%c ",s->data[s->top--])

    }

    printf("\n")

}

void main()

{

    int su

    seqstack *s

    char x,y

    while(1)

    {

    printf("制空表:1   判栈空:2   取栈顶元素:3   入栈:4    出栈:5    显示栈中元素:6\n")

    scanf("%d",&su)

    switch(su)

    {

    case  1:

           s=init_seqstack(s)

           break

    case  2:

           empty_seqstack(s)

           break

    case  3:

          get_seqstack(s)

          break

    case  4:

          getchar()

          printf("请输入入栈字符:")

          scanf("%c",&x)

          s=push_seqstack(s, x)

          break

    case  5:

         s=pop_seqstack(s,y)

         break

    case  6:

          show(s)

          break

    } 

    }

}

c语言标准库函数里没有error函数。C语言对异常的处理确实不够好,大多的时候都需要人工除错。

有几个类似的函数,分别处理各种情况下的异常:

ferror函数:在调用各种输入输出函数(如

putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。

它的一般调用形式为

ferror(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件

每一次调用输入输出函数,均产生一个新的ferror函

数值,因此,应当在调用一个输入输出函数后立即检

查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。

perror函数:

用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数

s

所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno

的值来决定要输出的字符串。

strerror函数:用来

从错误号码

用英文表达的错误内容,返回指针,指向这段英文字符串。如果你不知道错误号,那么在出错发生时,及时用

errno

的当前值

作参数,打印这段字符串。

类型定义不当,除数为0,指针使用错误。

error命令是C++语言的预处理命令之一,当预处理器预处理到error命令时将停止编译并输出用户自定义的错误消息。

int*re()

{

int*a

a=newint[10]

for(inti=0i<10i++)

a[i]=i

returna

}

扩展资料

error

用法示例:

/*

*检查编译此源文件的编译器是不是C++编译器

*如果使用的是C语言编译器则执行#error命令

*如果使用的是C++编译器则跳过#error命令

*/

#ifndef__cplusplus

#error亲,您当前使用的不是C++编译器噢!

#endif

#include<stdio.h>

intmain()

{

printf("Hello,World!")

return0

}