2014-02-28 70 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