【发布时间】:2018-02-17 15:14:29
【问题描述】:
我有以下代码,只要调用strcpy 函数,代码就会崩溃。当这些行被注释掉时,代码不会崩溃。怎么了?
char cities[80][17];
char char_distances[40][2];
int distances[40];
char cities_sorted[20][17];
while (!feof(Text)) {
fscanf(Text, "%[^\t]\t%[^\t]\t%[^\n]\n",
cities[i], cities[i + 1], char_distances[i]);
distances[i] = atoi(char_distances[i]);
printf("City_start: %s City_end: %s Distance: %d \n",
cities[i], cities[i + 1], distances[i]);
static char uniqueCities[21][17];
int uniqueCitiesCount;
for (int j = 0; j < 21; j++) {
printf("%s\n", uniqueCities[i]);
bool start_unique = !areEqual(cities[i], cities[j]);
bool end_unique = !areEqual(cities[i], cities[j + 1]);
if (start_unique) {
strcpy(uniqueCities[uniqueCitiesCount], cities[i]);
uniqueCitiesCount++;
}
if (end_unique) {
strcpy(uniqueCities[uniqueCitiesCount], cities[i + 1]);
strcpy(uniqueCities[uniqueCitiesCount], cities[i + 1]);
uniqueCitiesCount++;
}
}
i++;
}
谢谢
【问题讨论】:
-
你确定 city[i + 1] 没有超出数组的范围吗?你能试试 gdp 看看它在哪个比较中与哪个索引值崩溃
-
当 i = 6 时崩溃
-
不要
while (!feof(Text)) -
我没有看到你对
uniqueCitiesCount有价值? -
...或'i',就此而言:(