상당히 기본적인 부분에 문제가 있습니다. 아래에 표시된 파일에서 각 줄을 읽고 strtok을 사용하여 세 부분으로 나누고 각 부분을 배열에 저장해야합니다. "goals"와 "assists"에 대한 배열은 완벽하게 작동하지만, 어떤 이유로 전체 이름 배열은 파일에서 읽은 성으로 채워집니다.fgets와 strtok를 사용하여 파일의 행을 읽고 파싱하기.
입력 파일 :
Redden 2 0
Berglund 5 2
Jackman 2 0
Stewart 4 0
Oshie 3 5
McDonald 2 4
Pietrangelo 2 7
Perron 2 6
Tarasenko 5 5
관련 코드 : 어떤 이유
int main(int argc, char* argv){
FILE* inFile = fopen(argv[1],"r");
char ** nameArray;
int * goalArray;
int * assistArray;
int size = countLinesInFile(inFile);
allocateMemory(&goalArray, &assistArray, &nameArray, size);
readLinesFromFile(inFile, goalArray, assistArray, nameArray, size);
}
void allocateMemory(int** goals, int** assists, char*** names, int size)
{
*goals = malloc(size*sizeof(int));
*assists = malloc(size*sizeof(int));
*names = malloc(size*sizeof(char *));
int i;
for(i=0; i<size; i++)
{
*(*names + i) = calloc(MAX_NAME,sizeof(char));
}
}
void readLinesFromFile(FILE* fPtr, int* goals, int* assists, char** names, int numLines)
{
int i;
char * buffer = malloc(MAX_LINE*sizeof(char));
for(i = 0; i<numLines; i++)
{
if(fgets(buffer, MAX_LINE, fPtr)!= NULL)
{
names[i] = strtok(buffer, " \n");
goals[i] = atoi(strtok(NULL, " \n"));
assists[i] = atoi(strtok(NULL, " \n"));
}
}
}
, nameArray [0-9] 모두가 "타라 센코"를 포함하고,이 어떤 도움을 크게 감상 할 수있다.
감사합니다. – user2100887