[問題] K&RII 5.6 Pointer Arrays

看板C_and_CPP (C/C++)作者 (ffxiou)時間16年前 (2010/01/11 13:41), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/1
K&RII 5.6 Pointer Arrays的readline函式 片段程式如下: /* readlines: read input lines */ int readlines(char *lineptr[], int maxlines) { int len, nlines; char *p, line[MAXLEN]; nlines = 0; while ((len = getline(line, MAXLEN)) > 0) if (nlines >= maxlines || p = alloc(len) == NULL) return -1; else { line[len-1] = '\0'; /* delete newline */ strcpy(p, line); lineptr[nlines++] = p; } return nlines; } 我的問題就是lineptr[nlines++] = p這一行 假設我輸入: defgh jklmnopqrst abc 然後printf("%s,%s,%s",lineptr[0],lineptr[1],lineptr[2]); 書本的題意照理講應該會輸出: defgh,jklmnopqrst,abc 但實際輸出: abc,abc,abc 每個指標陣列都指向最後一個輸入列,這不就跟書本題意(每個指標陣列都個別指向一 個輸入列) 不一樣了嗎?還是我有哪邊有想錯,煩請各位前輩不吝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.11.76

01/11 20:27, , 1F
if (nlines >= maxlines || p = alloc(len) == NULL)
01/11 20:27, 1F

01/11 20:28, , 2F
改成
01/11 20:28, 2F

01/11 20:28, , 3F
if (nlines >= maxlines || (p = alloc(len)) == NULL)
01/11 20:28, 3F

01/11 20:28, , 4F
應該就正常了吧...
01/11 20:28, 4F
文章代碼(AID): #1BIheCIx (C_and_CPP)
文章代碼(AID): #1BIheCIx (C_and_CPP)