所以我对 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 的新手,所以我意识到我的代码语义可能很糟糕——任何事情都有帮助。谢谢!