常见编译错误及常用标准库函数Word格式.docx
《常见编译错误及常用标准库函数Word格式.docx》由会员分享,可在线阅读,更多相关《常见编译错误及常用标准库函数Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
isnotamemberof'
####'
'
不是'
结构体的一个成员(一般是因为错误引用结构体成员)
5.errorC2057:
expectedconstantexpression期望是常量表达式(一般出现在switch语句的case分支中)
6.errorC2061:
syntaxerror:
identifier'
***'
语法错误:
标识符'
***'
(一般是因为未定义形式参数的数据类型)
7.errorC2065:
undeclaredidentifier
未声明过的标识符
8.errorC2082:
redefinitionofformalparameter'
重复定义形式参数'
9.errorC2133:
unknownsize
不知道其大小(一般是因为数组未定义长度)
10.errorC2143:
syntaxerror:
missing'
;
before'
{'
句法错误:
前缺少'
11.errorC2146:
beforeidentifier'
在'
12.errorC2181:
illegalelsewithoutmatchingif
非法的else,没有与之匹配的if(一般是因为if与else不配对)
13.errorC2196:
casevalue'
alreadyused
case值'
已经使用过(一般出现在switch语句的case分支中)
14.errorC2296:
%'
illegal,leftoperandhastype'
float'
非法,左操作数应为’float'
类型
15.errorC2297:
illegal,rightoperandhastype'
非法,右操作数应为'
16.errorC2562:
void'
functionreturningavalue
无返回值的函数返回了一个值
17.errorC2660:
functiondoesnottake2parameters
函数不能传递2个参数
18.errorC2466:
cannotallocateanarrayofconstantsize0
不能分配一个大小为0的数组(一般是因为数组未定义长度)
19.errorC4716:
mustreturnavalue
函数必须返回一个值(一般是定义返回值的函数体内未写return语句)
20.warningC4035:
noreturnvalue
函数没有返回值
21.warningC4244:
return'
conversionfrom'
to'
int'
possiblelossofdata
从'
转换为’int'
可能丢失数据
22.warningC4553:
=='
operatorhasnoeffect;
didyouintend'
='
?
没有效果的运算符“==”是;
否改为“=”?
23.warningC4700:
localvariable'
usedwithouthavingbeeninitialized局部变量'
没有初始化就使用
24.errorC4716:
函数必须返回一个值
25.LINK:
fatalerrorLNK1168:
cannotopenDebug/P1.exeforwriting
连接错误:
不能打开P1.exe文件,以改写内容
(一般是因为P1.Exe还在运行,未关闭)
附录B常用标准库函数
1.stdio.h中包括的常用函数
1.fclose关闭文件
原型:
intfclose(FILE*stream);
功能:
关闭由stream指向的流。
清洗保留在流缓冲区内的任何未写的输出。
如果是自动分配,
那么就释放缓冲区。
返回:
如果成功,就返回零。
如果检测到错误,就返回EOF。
2.feof检测文件末尾
intfeof(FILE*stream);
如果为stream指向的流设置了文件尾指示器,则返回非零值;
否则返回零。
3.ferror检测文件错误
intferror(FILE*stream);
如果为stream指向的流设置了文件错误指示器,则返回非零值;
4.fflush清洗文件缓冲区
intfflush(FILE*stream);
把任何未写入的数据写到和stream相关的缓冲区中,其中stream指向用于输出或更新
的已打开的流。
如果stream是空指针,那么flush函数清洗存储在缓冲区中的所有未写入的流。
返回:
如果成功就返回零。
5.fgetc从文件中读取字符
intfgetc(FILE*stream);
从stream指向的流中读取字符。
读到的字符。
如果fgetc函数遇到流的末尾,则设置流的文件尾指示器并且返回EOF。
如果读取发生错误,fgetc函数设置流的错误指示器并且返回EOF。
6.fgetpos获得文件位置
intfgetpos(FILE*stream,fpos_t*pos);
把stream指向的流的当前位置存储到pos指向的对象中。
如果成功就返回零。
如果调用失败,则返回非零值,并且把由实现定义的错误码存储
到errno中。
7.fgets从文件中读取字符串
char*fgets(char*s,intn,FILE*stream);
从stream指向的流中读取字符,并且把读入的字符存储到s指向的数组中。
遇到第一
个换行符已经读取了n-1个字符,或到了文件末尾时,读取操作都会停止。
fgets函数会在字
符串后添加一个空字符。
s(指向数组的指针),如果读取操作错误或fgets函数在存储任何字符之前遇到了流
的末尾,都会返回空指针。
8.fopen打开文件
FILE*fopen(constchar*filename,constchar*mode);
打开文件以及和它相关的流,文件名是由filename指向的。
mode说明文件打开的方式。
文件指针。
在执行下一次关于文件的操作时会用到此指针。
如果无法打开文件则返回空指针。
9.fprintf格式化写文件
intfprintf(FILE*stream,constchar*format,...);
向stream指旨向的流写输出。
format指向的字符串说明了后续参数显示的格式。
写入的字符数量。
如果发生错误就返回负值。
10.fputc向文件写字符
intfputc(intc,FILE*stream);
把字符c写到stream指向的流中。
c(写入的字符),如果写发生错误,fputc函数会为stream设置错误指示器,并且返
回EOF。
11.fputs向文件写字符串
intfputs(constchar*s,FILE*stream);
把s扌旨向的字符串写到stream指向的流中。
如果成功,返回非负值。
如果写发生错误,则返回EOF。
12.fread从文件读块
size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);
试着从stream指向的流中读取nmemb个元素,每个元素大小为size个字节,并且把读入的元素存储到ptr指向的数组中。
实际读入的元素(不是字符)数量。
如果fread遇到文件末尾或检测到读取错误,那么此数将会小于nmemb。
如果nmemb或size为零,则返回值为零。
13.freopen重新打开文件
FILE*freopen(constchar*filename,constchar*mode,FILE*stream);
在freopen函数关闭和stream相关的文件后,打开名为filename且与stream相关的文件。
Mode参数具有和fopen函数调用中相同的含义。
如果操作成功,返回stream的值。
如果无法打开文件则返回空指针。
14.fscanf格式化读文件
intfscanf(FILE*stream,constchar*format,...);
向stream指向的流读入任意数量的数据项。
format指向的字符串说明了读入项的格式。
跟在format后边的参数指向数据项存储的位置。
成功读入并且存储的数据项数量。
如果发生错误或在可以读数据项前到达了文件末尾,那么就返回EOF。
15.fseek文件查找
intfseek(FILE*stream,longintoffset,intwhence);
为stream指旨向的流改变文件位置指示器。
如果whenee是SEEK_SET,那么新位置是在
文件开始处加上offset个字节。
如果whenee是SEEK_CUR,那么新位置是在当前位置加上offset个字节。
如果whenee是SEEK_END,那么新位置是在文件末尾加上offset个字节。
对于
文本流而言,offset必须是零,或者whenee必须是SEEK_SET并且offset的值是由前一次的ftell函数调用获得的。
而对于二进制流来说,fseek函数不可以支持whenee是SEEK_END的调用。
如果操作成功就返回零。
否则返回非零值。
16.fset