示例程序 EXAM8 中,有如下程序段: total += sprintf( FILE_DATA_BUF + total, "在本次添加數(shù)據(jù)之前,該文件已有數(shù)據(jù)\xd\xa", CH375vFileSize ); // 將新數(shù)據(jù)添加到緩沖區(qū)的尾部,累計(jì)緩沖區(qū)內(nèi)的數(shù)據(jù)長(zhǎng)度 mFlushBufferToDisk( 0 ); // 自動(dòng)刷新緩沖區(qū),檢查緩沖區(qū)是否已滿,滿則寫盤 ......... ......... /* 用定時(shí)器0的計(jì)數(shù)值代替ADC數(shù)據(jù) */ total += sprintf( FILE_DATA_BUF + total, " ********************************* " ); // 將新數(shù)據(jù)添加到緩沖區(qū)的尾部,累計(jì)緩沖區(qū)內(nèi)的數(shù)據(jù)長(zhǎng)度 total += sprintf( FILE_DATA_BUF + total, "這次的ADC數(shù)據(jù)到此結(jié)束,程序即將退出\xd\xa" ); // 將新數(shù)據(jù)添加到緩沖區(qū)的尾部,累計(jì)緩沖區(qū)內(nèi)的數(shù)據(jù)長(zhǎng)度 mFlushBufferToDisk( 1 ); // 強(qiáng)制刷新緩沖區(qū),因?yàn)橄到y(tǒng)要退出了,所以必須強(qiáng)制刷新
我在主程序中,去掉了 ADC數(shù)據(jù) 輸入部分,只沿用了以上給出的程序段,在編譯調(diào)試時(shí),編譯提示:total += sprintf( FILE_DATA_BUF + total, " ********************************* " ); 和 total += sprintf( FILE_DATA_BUF + total, "這次的ADC數(shù)據(jù)到此結(jié)束,程序即將退出\xd\xa" );命令行出錯(cuò)!(Wrong number of arguments) 當(dāng)我將該兩行命令后添加參數(shù) CH375vFileSize 之后,變?yōu)?total += sprintf( FILE_DATA_BUF + total, " ********************************* ",CH375vFileSize ); 和 total += sprintf( FILE_DATA_BUF + total, "這次的ADC數(shù)據(jù)到此結(jié)束,程序即將退出\xd\xa",CH375vFileSize );編譯可以通過(guò),不再提示錯(cuò)誤,但是,程序運(yùn)行完成之后,并沒(méi)有將新加的字符串添加到原文件數(shù)據(jù)的末尾! 請(qǐng)問(wèn)是何原因?那兩行 sprintf 函數(shù)應(yīng)該如何修改?