【发布时间】:2020-07-23 08:18:51
【问题描述】:
我有这个 sn-p 代码检查格式化文件中最大的数字集,即使算法有效,获取所述值的位置,输出始终是最后读取的行。发生了什么?
int main() {
int n, north_key, east_key;
char *identity, *time, *eastIdentity, *eastTime, *northIdentity, *northTime;
float latitude, longitude, max_east = MIN, max_north = MIN;
input = fopen("level2-1.in", "r");
fscanf(input, "%d", &n);
for(int i = 0; i <= n; i++) {
char line[MAX];
fgets(line, MAX, input);
identity = strtok(line, ",");
time = strtok(NULL, ",");
char *aux = strtok(NULL, ",");
latitude = std::atof(aux);
aux = strtok(NULL, "\n");
longitude = std::atof(aux);
if(max_north < latitude) {
max_north = latitude;
north_key = i;
northIdentity = identity;
northTime = time;
}
if(max_east < longitude) {
max_east = longitude;
east_key = i;
eastIdentity = identity;
eastTime = time;
}
printf("%d, %d\n", north_key, east_key);
}
printf("%s,%s, %s,%s\n", northIdentity, northTime, eastIdentity, eastTime);
fclose(input);
return 0;
}
【问题讨论】:
-
在调试器中运行你的程序。
-
这是 C 而不是 C++。哦,等等,没有那个
std::atof使它成为 C++。 -
如果没有得到预期的输出,算法怎么会起作用?
-
@user4581301 好吧,north_key 和 east_key 变量实际上 100% 正确。唯一的问题是打印的字符串总是从文件中读取的最后一行