void readit(FILE* filePtr, int* num1, int* num2, char** strings, int lines)
{
int t;
char line[50];
for (t = 0; t < lines; t++){
fgets(line, 50, filePtr);
*(strings + t) = strtok(line, " "));
*(num2 + t) = atoi(strtok(NULL, " "));
*(num2 + t) = atoi(strtok(NULL, " "));
}
在此代码中,*strings 部分未按预期执行。每次通过代码都会覆盖整个字符串数组。fgets 正在读取正确的数据,如果我打印第一个令牌的值,则每个循环都符合我的预期。在循环之外,(或在 if i print (i - 1) 所有数组 *str + 1、*str + 2 等内部)将包含最后一次通过的值。
例如。
*(strings + 0) = "Hi";
printf("%s", *(strings + 0)); //Will print hi
//next iteration
*(strings + 1) = "You";
printf("%s", *(strings + 1)); // will print you
printf("%s", *(strings + 0)); // will print you as well