【发布时间】:2018-03-04 22:14:38
【问题描述】:
我找到了问题第一部分的答案(如何使用 scanf 读取多个值),但它似乎对我不起作用(我认为这是因为将值放入数组中,也可能是因为我'正在检查给定的值是否肯定是 6 个整数):
我正在编写一个程序,将 4 个三角形的坐标存储在一个数组中。每条线有 6 个值并存储一个三角形的坐标。我想一次读取6个坐标,分别对4个三角形做这个操作。
int tab[4][6];
for (int i = 0; i < 4; i++){
while (scanf("%d %d %d %d %d %d", &tab[i][0], &tab[i][1], &tab[i][2], &tab[i][3], &tab[i][4], &tab[i][5]) != 6){
printf("Error, try again: ");
while (getchar() != '\n'){}
}
}
例如,如果第一个三角形的坐标是 (2,1)、(5,6)、(2,7),那么我想输入:“2 1 5 6 2 7”,结果我希望它按照我输入的顺序用上述数字填充数组的第一行。
显然它不起作用,程序在第一行给出后停止工作(没有完成工作,它停止了)。
调试后出现此错误(在给出第一行后): “xxx.exe 中 0x0FDCC28C (msvcr120d.dll) 处未处理的异常:0xC0000005:访问冲突写入位置 0xCCCCCCCC。”
如何解决?
【问题讨论】:
-
minimal reproducible example?这对一个人来说真的不够。
-
你能贴出编译器的实际错误信息吗?代码看起来没问题,也许你不包括
stdio.h? -
@Pablo "请参阅 'scanf' 的声明",我将其包括在内。
-
请逐字发布编译器错误。