常见编译错误及常用标准库函数Word文档格式.docx
- 文档编号:19581241
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:22
- 大小:27.43KB
常见编译错误及常用标准库函数Word文档格式.docx
《常见编译错误及常用标准库函数Word文档格式.docx》由会员分享,可在线阅读,更多相关《常见编译错误及常用标准库函数Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
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'
非法,左操作数应为'
类型
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
从'
转换为'
,可能丢失数据
22.warningC4553:
=='
operatorhasnoeffect;
didyouintend'
='
?
没有效果的运算符“==”;
是否改为“=”?
23.warningC4700:
localvariable'
usedwithouthavingbeeninitialized
局部变量'
没有初始化就使用
24.errorC4716:
函数必须返回一个值
25.LINK:
fatalerrorLNK1168:
cannotopenDebug/P1.exeforwriting
连接错误:
不能打开P1.exe文件,以改写内容
(一般是因为P1.Exe还在运行,未关闭)
附录B常用标准库函数
一.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是空指针,那么fflush函数清洗存储在缓冲区中的所有未写入的流。
如果成功就返回零。
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指向的流改变文件位置指示器。
如果whence是SEEK_SET,那么新位置是在文件开始处加上offset个字节。
如果whence是SEEK_CUR,那么新位置是在当前位置加上offset个字节。
如果whence是SEEK_END,那么新位置是在文件末尾加上offset个字节。
对于文本流而言,offset必须是零,或者whence必须是SEEK_SET并且offset的值是由前一次的ftell函数调用获得的。
而对于二进制流来说,fseek函数不可以支持whence是SEEK_END的调用。
如果操作成功就返回零。
否则返回非零值。
16.fsetpos设置文件位置
intfsetpos(FILE*stream,constfpos_t*pos);
根据pos(前一次fgetpos函数调用获得的)指向的值来为stream指向的流设置文件位置指示器。
如果调用失败,返回非零值,并且把由实现定义的错误码存储在errno中。
17.ftell确定文件位置
longintftell(FILE*stream);
返回stream指向的流的当前文件位置指示器。
如果调用失败,返回-1L,并且把由实现定义的错误码存储在errno中。
18.fwrite向文件写块
size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream);
从ptr指向的数组中写nmemb个元素到stream指向的流中,且每个元素大小为size个字节。
实际写入的元素(不是字符)的数量。
如果fwrite函数检测到写错误,则这个数将会小于nmemb。
19.getchar读入字符
intgetchar(void);
从stdin流中读入一个字符。
注意:
getchar函数通常是作为宏来实现的。
读入的字符。
如果读取发生错误,则返回EOF。
20.gets读入字符串
char*gets(char*s);
从stdin流中读入多个字符,并把这些读入的字符存储到s指向的数组中。
s(即存储输入的数组的指针)。
如果读取发生错误或gets函数在存储任何字符之前遇到流的末尾,那么返回空指针。
21.printf格式化写
intprintf(constchar*format,...);
向stdout流写输出。
写入数据的数量。
22.putchar写字符
intputchar(intc);
把字符c写到stdout流中。
putchar函数通常作为宏来实现的。
c(写入的字符)。
如果写发生错误,putchar函数设置流的错误指示器,并且返回EOF。
23.puts写字符串
intputs(constchar*s);
把s指向的字符串写到strout流中,然后写一个换行符。
如果成功返回非负值。
如果写发生错误则返回EOF。
24.remove移除文件
intremove(constchar*filename);
删除文件,此文件名由filename指向。
如果成功就返回零;
25.rename重命名文件
intrename(constchar*old,constchar*new);
改变文件的名字。
old和new指向的字符串分别包含旧文件名和新文件名。
如果改名成功就返回零。
如果操作失败,就返回非零值(可能因为旧文件目前是打开的)。
26.rewind返回到文件头
voidrewind(FILE*stream);
为stream指向的流设置文件位置指示器到文件的开始处。
为流清除错误指示器和文件尾指示器。
27.scanf格式化读
intscanf(constchar*format,...);
从stdin流读取任意数量数据项。
跟随在format后边的参数指向数据项要存储的地方。
如果发生错误或在可以读入任意数据项之前到达了文件末尾,就返回EOF。
28.sprintf格式串写
intsprintf(char*s,constchar*format,...);
与fprintf函数和printf函数很类似,但是sprintf函数不是把字符写入流,而是把字符存储到s指向的数组中。
format指向的字符串说明了后续参数显示的格式,在输出的末尾存储一个空字符到数组中。
存储到数组中的字符数量,不计空字符。
29.sscanf格式串读
intsscanf(constchar*s,constchar*format,...);
与fscanf函数和scanf函数很类似,但是sprintf函数不是从流读取字符,而是从s指向的字符串中读取字符。
跟随在format后的参数指向数据项要存储的地方。
如果在可以读入任意数据项之前到达了字符串末尾,就返回EOF。
30.tmpfile创建临时文件
FILE*tmpfile(void);
创建临时文件,此文件在被关闭或者程序结束时会被自动删除。
按照"
wb+"
模式打开文件。
当执行对此文件的后续操作时候用到此指针。
如果无法创建文件,则返回空
31.tmpnam产生临时文件名
char*tmpnam(char*s);
产生临时文件名。
如果s是空指针,那么tmpnam把文件名存储在静态变量中。
否则,它会把文件名复制到s指向的字符数组中。
(数组必须足够长可以存储L_tmpnam个字符,这里的L_tmpnam是在<
stdio.h>
头文件中定义的宏。
指向文件名的指针。
32.ungetc未读取的字符
intungetc(intc,FILE*stream);
把字符c回退到stream指向的流中,并且清除流的文件尾指示器。
由连续的ungetc函数调用回退的字符数量有变化。
只能保证第一次调用成功。
调用文件定位函数(fseek函数、fsetpos函数或者rewind函数)会导致回退的字符丢失。
c(回退的字符)。
如果没有读取操作或者文件定位操作就试图回退过多的字符,那么函数将会返回EOF。
二.math.h中包括的常用函数
1.abs整数的绝对值
intabs(intj);
整数j的绝对值。
2.acos反余弦
doubleacos(doublex);
x的反余弦值。
返回值的范围在0到π之间。
如果x的值不在−1到+1之间,那么就会发生定义域错误。
3.asin反正弦
doubleasin(doublex);
x的反正弦值。
返回值的范围在-π/2到π/2之间。
如果x的值不在-1到+1之间,那么就会发生定义域错误。
4.atan反正切
doubleatan(doublex);
x的反正切值。
返回值的范围在−π/2到π/2之间。
5.atan2商的反正切
doubleatan2(doubley,doublex);
y/x的反正切值。
返回值的范围在−π到π之间。
如果x和y的值都为零,那么就会发生定义域错误。
6.ceil上整数
doubleceil(doublex);
大于或等于x的最小整数。
7.cos余弦
doublecos(doublex);
x的余弦值(按照弧度衡量的)。
8.cosh双曲余弦
doublecosh(doublex);
x的双曲余弦值。
如果x的数过大,那么可能会发生取值范围错误。
9.exp指数
doubleexp(doublex);
e的x次幂的值(即ex)。
10.fabs浮点数的绝对值
doublefabs(doublex);
x的绝对值。
11.floor向下取整
doublefloor(doublex);
小于或等于x的最大整数。
12.fmod浮点模数
doublefmod(doublex,doubley);
x除以y的余数。
如果y为零,是发生定义域错误还是fmod函数返回零是由实现定义的。
13.frexp分解成小数和指数
doublefrexp(doublevalue,int*exp);
按照下列形式把value分解成小数部分f和指数部分n:
value=f×
2n
其中f是规范化的,因此0.5≤f<
1或者f=0。
把n存储在exp指向的整数中。
f,即value的小数部分。
14.labs长整数的绝对值
longintlabs(longintj);
j的绝对值。
如果不能表示j的绝对值,那么函数的行为是未定义的。
15.ldexp联合小数和指数
doubleldexp(doublex,intexp);
x×
2exp的值。
可能会发生取值范围错误。
16.log自然对数
doublelog(doublex);
基数为e的x的对数(即1nx)。
如果x是负数,会发生定义域错误;
如果x是零,则会发生取值范围错误。
17.long10常用对数
doublelog10(doublex);
基数为10的x的对数。
18.modf分解成整数和小数部分
doublemodf(doublevalue,double*iptr);
把value分解成整数部分和小数部分。
把整数部分存储到iptr指向的double型对象中。
value的小数部分。
19.pow幂
doublepow(doublex,doubley);
x的y次幂。
发生定义域错误的情况有:
(1)当x是负数并且y的值不是整数时;
(2)当x为零且y是小于或等于零,无法表示结果时。
取值范围错误也是可能发生的。
20.sin正弦
doublesin(doublex);
x的正弦值(按照弧度衡量的)。
21.sinh双曲正弦
doublesinh(doublex);
x的双曲正弦值(按照弧度衡量的)。
22.sqrt平方根
doublesqrt(doublex);
x的平方根。
如果x是负数,则会发生定义域错误。
23.tan正切
doubletan(doublex);
x的正切值(按照弧度衡量的)。
24.tanh双曲正切
doubletanh(doublex);
x的双曲正切值。
三.stdlib.h中包括的常用函数
1.atexit在程序退出处注册要调用的函数
intatexit(void(*func)(void));
注册由func指向的函数作为终止函数。
如果程序正常终止(通过return或exit,而不是abort),那么将调用函数。
可以重复调用atexit函数来注册多个终止函数。
最后一个注册的函数将是在终止前第一个被调用的函数。
如果成功,返回零。
如果不成功,则返回非零(达到由实现定义的限制)。
2.atof把字符串转换成浮点数
doubleatof(constchar*nptr);
对应字符串最长初始部分的double型值,此字符串是由nptr指向的,且字符串最长初始部分具有浮点数的格式。
如果无法表示此数,则函数的行为将是未定义的。
3.atoi把字符串转换成整数
intatoi(constchar*nptr);
对应字符串最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 编译 错误 常用 标准 库函数