gpt4 book ai didi

C:用scanf读取多个值并保存到一个数组中

转载 作者:行者123 更新时间:2023-12-01 13:22:56 24 4
gpt4 key购买 nike

我找到了问题第一部分的答案(如何使用 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。”

如何解决?

最佳答案

例如检测输入错误时需要减去指针i ->

#include <stdio.h>
int main(int argc, const char * argv[]) {
int tab[4][6];
for (int i = 0; i < 4; i++){
printf("Enter 6 values \n");
int retVal=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]);
if (retVal == 6) {
printf("You did enter -> %d %d %d %d %d %d\n",tab[i][0],tab[i][1],tab[i][2],tab[i][3],tab[i][4],tab[i][5]);
} else {
printf("Error entering values.. (Enter numbers). \n");
while (getchar() != '\n'){}
i--;
}
}
return 0;
}

关于C:用scanf读取多个值并保存到一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49101063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com