[問題]不知道問題出在哪 如果有人知道可以請回 …

看板C_and_CPP (C/C++)作者 (阿吉)時間16年前 (2009/08/11 21:25), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
我有一個文字檔,內容為 input N1,N2,N3,N6,N7; 我用了一個char的指標 char *m = strchr(src,',') ; 就一個一個把他分開 然後讀取出來我要的字元 N1 N2 N3.... 但是 一直到N6都沒問題 N7時我用了 char *n = strchr(src,';') ; 去處理最後一個字元 結果這個時後 char *m = strchr(src,',') ; 這行應該是等於NULL 但是他卻說你的程式引發了存取程式錯誤 誰可以跟我說是什麼原因呢 有需要我再付上程式碼 謝謝大家了 =================================code====================== #include <iostream> #include <fstream> #include <string> #include <sstream> #include <conio.h> using namespace std; int readfile(int argc,char* filename); void strchrn(char *dest,char *dest2, const char *src); int main(int argc, char* argv[]) { readfile(argc,argv[1]); getch(); return 0; } int readfile(int argc,char* filename) { ifstream fin; fin.open(filename); string line; string gatename[10000]; char* tmp; char* dest; char* dest2; int i=0; int gatecount; if(argc != 2) { cout << "指令: read <檔案名稱>" << endl; return 1; } if(!fin) { cout << "檔案I/O失敗" << endl; return 1; } while(getline(fin,line)) { istringstream ss(line); string word; while(ss >> word) { if(word=="//") break; else if(word=="module") break; else if(word=="input") { ss >> word; tmp=new char [word.size()+1]; dest=new char [word.size()+1]; dest2=new char [word.size()+1]; strcpy (tmp, word.c_str()); while(tmp!=NULL){ cout << tmp <<endl; strchrn(dest,dest2, tmp); gatename[i]=dest; cout << gatename[i] <<endl; i++; tmp=dest2; } getch(); } else cout << word << endl; } // cout << endl; } fin.close(); } void strchrn(char *dest,char *dest2, const char *src) { char *n = strchr(src,',') ; char *m = strchr(src,',') ; cout <<"strlen(m) = " << strlen(m) << endl ; int len = strlen(src)-strlen(m); if (m!=NULL) { strncpy(dest, src, len); strncpy(dest2, m+1,strlen(m)+1); cout << "strlen(m)+1=" <<strlen(m)+1 << endl; } else { strncpy(dest, src, strlen(src)-strlen(n)); dest2=NULL; } cout << "dest=" << dest << endl; dest[len] = '\0'; dest2[strlen(m)+2]='\0'; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.2.154 ※ 編輯: dmx6 來自: 134.208.2.154 (08/11 21:25)

08/11 22:25, , 1F
附一下程式碼看看
08/11 22:25, 1F
※ 編輯: dmx6 來自: 134.208.2.154 (08/11 22:58)

08/11 22:59, , 2F
在最後面void strchrn 的部份
08/11 22:59, 2F

08/11 23:00, , 3F
讀的檔內容為 input N1,N2,N3,N6,N7;
08/11 23:00, 3F
文章代碼(AID): #1AWN56ZF (C_and_CPP)
文章代碼(AID): #1AWN56ZF (C_and_CPP)