strtok的source字串被更改掉 |
答題得分者是:jow
|
kobebryant81
一般會員 發表:15 回覆:15 積分:6 註冊:2007-05-08 發送簡訊給我 |
今天我有一些訊號資料存在筆記本裡,一共有兩行,第一行存訊號1,接著一個tab,再存訊號二,如下
1.456 2.5555 1.111 2.5444 1.222 2.3333 1.333 2.7777 ........ 我先用TStringList把資料都讀到SLTmp變數裡 那我用了strtok去分割字串,因為要做濾波,是一個大小為13的平均濾波器,因為我是取第6點的資料,所以前6,後6加第六點一共13點資料做平均 所以我做了第一點的濾波時(i=6)temp_str 裡很正確的都存了1.456 \t2.5555,當第二點做平均時(i=7)時,等於說剛剛已經擷取過的字串都會再重新分割一次 但temp_str 裡對於剛剛已經分割過的字串都變成只存1.456,而不再是1.456 \t2.5555,所以會導致我的s2變成NULL,但對於新分割的字串,temp_str 就會存上1.333\t2.7777, 之前有前輩說過strtok會更改掉source的內容,但我已經將變數清空了阿,甚至每次都在宣告一個 temp_str 還是不行,不知道我這樣描述大家懂我的問題嗎? 謝謝指教!! [code cpp] String s1= NULL, s2 = NULL ,divide = "\t" ,temp_str ; //s1:signal1、s2:signal2、 divide:分隔點"\t" for(int i=13/2;i for(int j=-13/2;j<13/2 1;j ) //大小13的濾波器 { temp_str = NULL; String temp_str = SLTmp->Strings[j i]; s1 = strtok(temp_str.c_str(),divide.c_str()); s2 = strtok(NULL,divide.c_str()); filter_sig1 =filter_sig1 StrToFloat(s1) //13個值累加 filter_sig2 = filter_sig2 StrToFloat(s2);//13個值累加 } //後續訊號處理 } [/code] |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
依資料產生時點i,
當 i<13, 平均值 = sum / 實際加總筆數 當 i>=13, 平均值 = sum / 13. [code cpp] //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int MAC = 13; char *p[2]; float sum[2]; float *u[2]; float *v[2]; TStringList* L = new TStringList(); try{ if(FileExists("D:\\FloatData.txt")) L->LoadFromFile("D:\\FloatData.txt"); int count = L->Count; if(count>0){ for(int i=0; i<2; i ) sum[i] = 0; for(int i=0; i<2; i ) u[i] = new float[count]; for(int i=0; i<2; i ) v[i] = new float[count]; for(int i=0; i p[0] = strtok(L->Strings[i].c_str(), "\t"); p[1] = strtok(NULL, "\t"); if(p[0]&&p[1]){ for(int j=0; j<2; j ){ u[j][i] = StrToFloat(AnsiString(p[j])); sum[j] = u[j][i]; if(i>=MAC)sum[j] -= u[j][i-MAC]; if(i } } } //Test: Show Result L->Clear(); for(int i=0; i } delete [] (float*)u; delete [] (float*)v; } } __finally{ delete L; } } //--------------------------------------------------------------------------- [/code]
編輯記錄
jow 重新編輯於 2007-10-01 16:59:15, 註解 無‧
|
kobebryant81
一般會員 發表:15 回覆:15 積分:6 註冊:2007-05-08 發送簡訊給我 |
|
kobebryant81
一般會員 發表:15 回覆:15 積分:6 註冊:2007-05-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |