2014-02-28 2 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++; 
} 
} 

내 출력에는 단어 목록 []이 마지막으로 읽은 단어로 가득 차 있습니다. 이것은 단어 검색 퍼즐을위한 것입니다. 퍼즐 [] [] 과제는 훌륭하게 작동하므로 잘못 될 곳을 이해하지 못합니다.

+0

모든 변수 유형 및 선언을 표시하십시오. – OldProgrammer

답변

1

라인을 복사하려면 strdup을 사용해야합니다. 그렇지 않으면 매번 라인을 덮어 쓰게되고 값의 모든 것이 동일한 문자열을 가리키는 포인터가됩니다. 이 문자열은 마지막 입력을 포함하므로 모든 입력이 마지막 입력을 가리키게됩니다.

실제 퍼즐을 한 번에 하나씩 복사하기 때문에 "퍼즐"할당이 올바르게 작동합니다.

+1

이것은 트릭을 만들었습니다! 감사! – atzero

관련 문제