该程序很长(这里是完整版:http://pastebin.com/cvg1eSJ1),(sample.txt 看起来像这样: http: //pastebin.com/hWihPpSj,它是 INPUT 文件,另一个命令行参数是输出文件。)但我发布了处理“第二个指针列表”的部分。基本上我有一个包含 47 个左右项目的列表,我需要将某个范围之外的项目添加到第二个列表中。这是我第一次保存值的地方。我使用“tempAddress”只是为了清理一些代码。我只是取当前地址的值,检查它,如果匹配,则将其添加到第二个阅读列表中。
for (i; i < numElements; i++) {
tempAddress = firstReadingList++;
if ((double) *tempAddress > plusOutlier || (double) *tempAddress < minusOutlier) {
*secondReadingList++ = *tempAddress;
numOutliers++;
printf("%d ", *tempAddress);
}
}
稍后,我必须在另一个函数中将此阅读列表写入文件。我打印出这些值,只有最后一个值不正确。我不知道为什么。这是我将它们写入文件的代码(在这种情况下 tempAddress 是一个新变量)
for (i; i < numElements; i++) {
tempAddress = (outlierList + i);
printf("%d ", *tempAddress);
fprintf(out, "%d ", *tempAddress);
}
第一个函数中的输出如下:
752 843 840 848 752 850 753(这是正确的)
第二个代码片段输出这个
752 843 840 848 752 850 577(577不正确)
我做错什么了吗?我对指针还比较陌生。我不会在函数之间的任何位置修改 secondListPointer。