私はCプログラミングにかなり慣れていないので、本当に理解できない問題を抱えています。ファイルから行を読み取り、各行を (文字列として) 配列に格納しようとしています。次に、その行で strtok を使用して、行から別の値を解析しています。strtokを使うとなぜか配列に入れている値が変わってしまいます。コードは以下のとおりです。
while(fgets(readLine, 100, inFile) != NULL) {
printf("j = %d\n", j);
puts(readLine);
machineList[j] = readLine;
puts(machineList[j]); //the value of machineList[j] at this point is equal
// to the current readLine
int i=0;
day = strtok(readLine, " ,");
puts(machineList[j]); //the value of machineList[j] at this point is no
//longer what it was at the previously noted point
while(i<3) {
day=strtok(NULL, " ,");
i++;
}
dayList[j]=atoi(day);
printf("Day is: %d\n\n", dayList[j] ); //these values come out as expected
j++;
}
なぜこれが起こっているのか誰でも説明できますか?machineList[j]=readLine を再割り当てしているわけではないので、わかりません。したがって、readLine の値が変更されても、machineList[j] の値は変更されません。繰り返しますが、私は C を初めて使用するので、コードのセマンティクスがひどいものになる可能性があることを認識しています。何でも役に立ちます。ありがとう!