2013-11-24 49 views
0

我用C中的指針掙扎。我需要將每行的第一個元素放入數組中。如何正確地分配C中的字符串數組中的指針?

重要部分:

char shipname[10]; 
char **shipTable = NULL; 


while (fgets(line,100,myfile) != NULL) { 
    sscanf(line, "%s %lf %lf %lf %lf", shipname, &lat, &lng, &dir, &speed); 
    shipTable = realloc(shipTable, numofShips*sizeof(char*)); 
    shipTable[numofShips-1]=malloc((10)*sizeof(char)); 
    (shipTable)[numofShips-1] = shipname; 
    //char *shipname=malloc((10)*sizeof(char)); 
    numofShips++; 
    } 

當打印我shipTable出每一個元素都一樣,我已經試過的&每個組合和*我走過來。

回答

1

您正在爲shiptTable的每個元素分配一個指針值 - 即指向shipname的第一個元素的指針,該元素的內存位置永遠不會更改。你真正想要做的是每次複製字符串 - 例如strcpy(shiptable[numofShips-1], shipname)

甚至更​​好,只需在sscanf之前分配內存,並使用shiptable [numofShips-1]作爲sscanf中的參數,而不是shipname。

+0

我剛剛在10分鐘前試過,感謝您的快速和準確的答案:D – Heksan