나는 라인으로 텍스트 파일의 라인을 읽고 배열의 위치에 각 줄을 저장하는 C 코드의 조각을 만든 :C : 문자열을 "char * myArray [100]"배열에 저장하는 방법은 무엇입니까?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static const int MAX_NUMBER_OF_LINES = 100000;
static const char filename[] = "file.csv";
int main (void)
{
// Read file and fill the Array
char *myArray[MAX_NUMBER_OF_LINES];
int numberLine = 0;
FILE *file = fopen (filename, "r");
if (file != NULL)
{
char line [128];
while (fgets (line, sizeof line, file) != NULL)
{
myArray[numberLine] = line;
numberLine++;
}
fclose (file);
}
// Print the Array
for (int i = 0; i<numberLine; i++)
{
printf("%d|%s", i, myArray[i]);
}
}
하지만 배열을 인쇄 할 때, 비어입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
해당 배열은 문자열에 대한 포인터 만 저장할 수 있으며 문자열을 저장할 수 없습니다. 정확히 무엇이 잘못되었는지, 모든 요소는 동일한 변수를 가리 킵니다. strdup()를 고려하십시오. –
그 변수는'if' 블록에 국한되어 있기 때문에 더 이상 존재하지 않습니다. –
어떤 유용한 대답이라도 투표하고 받아 들일 수있는 가장 좋은 대답을 선택하십시오 –