[問題]將字串存入一元陣列??

看板C_and_CPP作者 (gsl)時間14年前 (2011/02/16 16:18), 編輯推噓1(105)
留言6則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我想將txt檔資料讀出想要部分擷取下來存入一元陣列 餵入的資料(Input): 預期的正確結果(Expected Output): m[18]想要存放a1,a2,b1出來的字串總共進入while六次,一次三的字串 錯誤結果(Wrong Output): 每次print出來的值都是想要的,可是存入陣列後出來的結果就會無法顯示 我想應該是指標存的是位置重複做的結果會覆蓋原來的值 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <string.h> #include <stdlib.h> #include <stdio.h> using namespace std; int main() { FILE *fp; fp = fopen("C:\\Users\\99092040\\Desktop\\WI202 log\\SEQ-XXXXXXXX--20110127-230143_PASS.txt","r"); char a[50]; char m[18]; char b[50]; char c[4]; char d[6]; char *p1; char *p2; char *s1; char *a1; char *b1; char *a2; int i=0,j=0; while(fgets(a,50,fp)!=NULL) { p1=strstr(a,"ANT0"); p2=strstr(a,"ANT1"); //printf("%s\n",a); if(p1!=NULL || p2!=NULL) { //printf("%s\n",a); s1=strtok(a,"\t"); //printf("%s\n",s1); s1=strtok(NULL,"\t"); s1=strtok(NULL,"\t"); //printf("%s\n",&s1); a1=s1; //memcpy(a1, s1, sizeof(s1)); printf("%s\n",a1); m[j]=*a1; //strncpy(m[j],a1,sizeof(a1)); //printf("%s\n",m[0]); j=j+1; //a1=strcat(a1,"_"); s1=strtok(NULL,"\t"); a2=s1; //printf("%s",a2); m[j]=*a2; //strcpy(m[j],a2); j=j+1; s1=strtok(NULL,"\t"); s1=strtok(NULL,"\t"); s1=strtok(NULL,"\t"); s1=strtok(NULL,"\t"); s1=strtok(NULL,"\t"); b1=s1; //strcpy(m[j],b1); //printf("%s",b1); m[j]=*b1; j=j+1; //i=i+1; //printf("%s\n",m[0]); //printf("%s %s\t",a1,a2); } //printf("%s\n",m[j]); } printf("%s",(m[2])); fclose(fp); system("pause"); return 0; } 補充說明(Supplement): 被mark的地方是我要驗證出來的結果, printf("%s",(m[0]))理論上只想要一個字串,可是卻會跑出六個字串?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.146.217

02/17 00:28, , 1F
字串就是字元陣列 所以字串陣列就是字元的二維陣列
02/17 00:28, 1F

02/17 00:28, , 2F
然後你就知道你的問題在哪裡了
02/17 00:28, 2F

02/17 00:39, , 3F
國文老師時常請假...
02/17 00:39, 3F

02/17 00:45, , 4F
所以m設定為二維??我把m[18]改成m[6][3]結果還是一樣
02/17 00:45, 4F

02/17 10:35, , 5F
不是C語言嗎..怎麼會引入iostream 跟 using namespace?
02/17 10:35, 5F

02/17 12:09, , 6F
你的問題在於m[17]不是'\0',字串的結尾要用'\0'
02/17 12:09, 6F
文章代碼(AID): #1DM_ZYBm (C_and_CPP)