2014-02-28 68 views
0

我想分配一個字符串值(char *)到char數組的數組中的元素。我的問題是,我可以做這個任務,但它把最後一個讀取值放到每個元素中,而不是我想要的特定元素。我的代碼如下所示。我想分配字符串數組的字符串值

int wordListIterator = 0; 

int main(int argc, char **argv) { 

    FILE *fp = fopen(argv[1], "r"); 

    int lineCount = 0; 

    char line[80]; 
    while (fgets(line, sizeof(line), fp) != 0) { 
    parseLine(line, strlen(line), lineCount); 
    lineCount++; 
    } 
    fclose(fp); 
} // end main 

void parseLine(char * myLine, int stringLength, int myLineCount) { 

    if (isspace(myLine[1])) { 
     int i; 
    for (i = 0; i < stringLength; i++) { 
     Puzzle[myLineCount][i] = myLine[i]; 
    } 

} else 
if (isspace(myLine[1]) == 0) { 
    Wordlist[wordListIterator] = myLine; 
    wordListIterator++; 
} 
} 

我的輸出將有Wordlist []充滿最後一個字的讀取。這是一個詞搜索難題。拼圖[] []的作業效果很好,所以我不明白我出錯的地方。

+0

請顯示您所有的變量類型和聲明。 – OldProgrammer

回答

1

您需要使用strdup來複制您的行,否則您將每次覆蓋行,並且您的每個值都將是一個指向同一個字符串的指針。該字符串將包含最後一個輸入,所以它們都將指向最後一個輸入。

您的「難題」分配工作正常,因爲您一次只複製一個實際字符。

+1

這個伎倆!謝謝! – atzero