有几个类似的函数,分别处理各种情况下的异常:
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
的当前值
作参数,打印这段字符串。
#include <stdio.h>int main(){
char s[11]
int i
for(i=0i<10i++)
{
scanf("%c",&s[i])
}
s[i]='\0'
printf("%s\n",s)
return 0
}
调试后的代码,你的出错点可能在返回值上,我用vc6.0编译器是没问题的。
C语言错误 error: expected declaration or statement at end of input,是代码错误造成的,解决方法如下:
1、首先打开Dev C+,如果编写的代码正确,运行时会提示没有错误(Error)和警告(Warning),如下图所示。
2、对于 VS、GCC、Xcode 等,如果代码没有错误,只会显示“生成成功”,不会显示“0个错误,0个警告”,只有代码真的出错了,它们才会显示具体的错误信息。错误(Error)表示程序不正确,不能正常编译、链接或运行,必须要纠正。
3、警告(Warning)表示可能会发生错误(实际上未发生)或者代码不规范,但是程序能够正常运行,有的警告可以忽略,有的要引起注意。错误和警告可能发生在编译、链接、运行的任何时候。puts("C")最后忘记写分号,就会出现错误。
4、可以看出,C-Free 的错误提示信息比较少,不方便程序员纠错。
5、VC 和 VS 的错误信息类似,只是中英文的差别。