ch375往U盤中寫入多個文件的問題

往U盤中寫入多個文件,當(dāng)文件“WAVE1.BIN”已經(jīng)存在時,往U盤中寫文件“WAVE2.BIN”依此類推.... 由于文件名一直在改變,所以處理了一下,處理部分如下: char string1[12],*string2,string3[4]; string1[0]='W'; string1[1]='A'; string1[2]='V'; string1[3]='E'; string3[0]='.'; string3[1]='B'; string3[2]='I'; string3[3]='N';

for(num=1;num!=1000;num++) { rewrite: itoa(num,string2,10);//調(diào)用itoa,itoa是把整數(shù)num的值以10進制轉(zhuǎn)化為字符string2 strcat(string1,string2);//把string1和string2連在一起,并放在string1中 strcat(string1,string3);//把string1和string3連在一起,并放在string1中 //strcpy( (char *)mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C" ); strcpy( (char *)mCmdParam.Open.mPathName,string1); /* 文件名在?*/ i = CH375FileOpen( ); /* 打開文件 */ if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { /* 沒有找到文件 */ // printf( "Create\n" ); strcpy( (char *)mCmdParam.Create.mPathName, string1 ); /* 創(chuàng)建新文件名在根目錄下 */ i = CH375FileCreate( ); /* 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 */ mStopIfError( i );

Uart_Printf("\n aaaaawrite???"); goto USBstartwrite;//文件不存在,則已經(jīng)建立了文件,把程序跳到USBstartwrite } else /*找到文件*/ { // printf ("locate\n"); //mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; /*將文件指針移到文件末尾*/ //i=CH375FileLocate(); //mStopIfError( i ); num=num+1;//文件存在,則nmu值加1,再創(chuàng)建文件,跳到rewrite執(zhí)行 Uart_Printf("nummmm=%d\n",num); goto rewrite; } } USBstartwrite: USBbin_compose1(); pCodeStr=write_to_usb; Uart_Printf("filesize1=%d\n",filesize1); for ( k = 0; k!= filesize1; k ++ ) { FILE_DATA_BUF[k] = *pCodeStr; //break; //Uart_Printf("%d ",FILE_DATA_BUF[k] ); pCodeStr++; } NewSize = k; /* 新文件的長度 */ SecCount = (NewSize+511)/512; /* (NewSize+511)/512, 計算文件的扇區(qū)數(shù),因為讀寫是以扇區(qū)為單位的 */ Uart_Printf( "Write\n" );

while(1){ if(SecCount>(FILE_DATA_BUF_LEN>>9)) { mCmdParam.Write.mSectorCount = (FILE_DATA_BUF_LEN/512); /* 寫入所有扇區(qū)的數(shù)據(jù) */ NewSize=FILE_DATA_BUF_LEN; } else { mCmdParam.Write.mSectorCount = SecCount; NewSize=k; } mCmdParam.WriteX.mDataBuffer = &FILE_DATA_BUF[0]; Uart_Printf( "mCmdParam.WriteX.mDataBuffer=%d\n",mCmdParam.WriteX.mDataBuffer); i = CH375FileWriteX( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); if(mCmdParam.Write.mSectorCount<(FILE_DATA_BUF_LEN>>9))break; } Uart_Printf( "Modify\n" ); mCmdParam.Modify.mFileAttr = 0xff; /* 輸入?yún)?shù): 新的文件屬性,為0FFH則不修改 */ mCmdParam.Modify.mFileTime = 0xffff; /* 輸入?yún)?shù): 新的文件時間,為0FFFFH則不修改,使用新建文件產(chǎn)生的默認時間 */ mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2007, 5, 14 ); /* 輸入?yún)?shù): 新的文件日期: 2004.05.18 */ mCmdParam.Modify.mFileSize = NewSize; /* 輸入?yún)?shù): 如果原文件較小,那么新的文件長度與原文件一樣長,否則被RAM所限,如果文件長度大于64KB,那么NewSize必須為UINT32 */ i = CH375FileModify( ); /* 修改當(dāng)前文件的信息,修改日期和長度 */ mStopIfError( i ); Uart_Printf( "Close\n" ); mCmdParam.Close.mUpdateLen = 0; /* 不要自動計算文件長度,如果自動計算,那么該長度總是512的倍數(shù) */ i = CH375FileClose( ); mStopIfError( i );

但是經(jīng)過這樣修改后,每次都只寫進“WAVE1.BIN”,請高手幫幫忙

呵呵,這里犯了個低級錯誤,每一次進行strcat鏈接string1,string2,string3時,會把文件名越接越長,不符合DOS命名規(guī)范

因此在這時我把寫入的文件名直接用string2了,即 for(num=1;num!=1000;num++) { rewrite: itoa(num,string2,10);//調(diào)用itoa,itoa是把整數(shù)num的值以10進制轉(zhuǎn)化為字符string2 strcpy( (char *)mCmdParam.Open.mPathName,string2); /* 文件名在?*/ i = CH375FileOpen( ); /* 打開文件 */ if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { /* 沒有找到文件 */ // printf( "Create\n" ); strcpy( (char *)mCmdParam.Create.mPathName, string2 ); /* 創(chuàng)建新文件名在根目錄下 */ i = CH375FileCreate( ); /* 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 */ mStopIfError( i ); goto USBstartwrite;//文件不存在,則已經(jīng)建立了文件,把程序跳到USBstartwrite } else /*找到文件*/ { num=num+1;//文件存在,則nmu值加1,再創(chuàng)建文件,跳到rewrite執(zhí)行 Uart_Printf("nummmm=%d\n",num); goto rewrite; } } USBstartwrite: USBbin_compose1(); pCodeStr=write_to_usb; Uart_Printf("filesize1=%d\n",filesize1); for ( k = 0; k!= filesize1; k ++ ) { FILE_DATA_BUF[k] = *pCodeStr; //break; //Uart_Printf("%d ",FILE_DATA_BUF[k] ); pCodeStr++; } NewSize = k; /* 新文件的長度 */ SecCount = (NewSize+511)/512; /* (NewSize+511)/512, 計算文件的扇區(qū)數(shù),因為讀寫是以扇區(qū)為單位的 */ Uart_Printf( "Write\n" ); ..................(以下為寫文件)

但是經(jīng)過這樣以后,每次也只寫了一個文件1,雖然第二次執(zhí)行時string2的值有改變,但是也沒有寫進文件了呀?這是為什么??請高手指導(dǎo)!


經(jīng)調(diào)試,在多次調(diào)用程序時,string2、num的值都在改變,但為什么U盤中一直只有一個文件1,而往下寫進的文件不存在呢??


已經(jīng)可以寫進了,string2這個指針所指的文件名要有路徑符,謝謝HCN指導(dǎo)


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频