網(wǎng)站筆試簡(jiǎn)答題
二、簡(jiǎn)答題:20 分,共 2 題
1. (5 分)重復(fù)多次 fclose 一個(gè)打開(kāi)過(guò)一次的` FILE *fp 指針會(huì)有什么結(jié)果,并請(qǐng)解釋,
網(wǎng)站筆試簡(jiǎn)答題
。考察點(diǎn):導(dǎo)致文件描述符結(jié)構(gòu)中指針指向的內(nèi)存被重復(fù)釋放,進(jìn)而導(dǎo)致一些不可預(yù)期的異常。
2. (15 分)下面一段代碼,想在調(diào)用 f2(1) 時(shí)打印 err1,調(diào)用 f2(2) 時(shí)打印 err4,但是代碼中有一些問(wèn)題,請(qǐng)做盡可能少的修改使之正確。
1 static int f1( const char *errstr, unsigned int flag ) {
2 int copy, index, len;
3 const static char **__err = { "err1", "err2", "err3", "err4" };
4
5 if( flag & 0x10000 )
6 copy = 1;
7 index = ( flag & 0x300000 ) >> 20;
8
9 if( copy ) {
10 len = flag & 0xF;
11 errstr = malloc( len );
12 if( errstr = NULL )
13 return -1;
14 strncpy( errstr, __err[index], sizeof( errstr ) );
15 } else
16 errstr = __err + index;
17 }
18
19 void f2( int c ) {
20 char *err;
21
22 swtch( c ) {
23 case 1:
24 if( f1( err, 0x110004 ) != -1 )
25 printf( err );
26 case 2:
27 if( f2( err, 0x30000D ) != -1 )
28 printf( err );
29 }
30 }
【網(wǎng)站筆試簡(jiǎn)答題】相關(guān)文章: