#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
}