【发布时间】:2016-07-08 13:51:17
【问题描述】:
我有一个项目要做,要求我根据用户的输入将两个向量的地址记录到一个双精度数组中。然而。例如,如果用户写了
3 1 2 3 3 4 5
这意味着向量是3维的,两个向量是(1,2,3)(3,4,5)。如果用户写,
2 1 2 2 3
这意味着向量是二维的,两个向量是(1,2)(2,3)。我需要将这两个向量的坐标记录到两个双精度数组 x 和 y 中。如何使用 scanf 将坐标读入这两个数组? (我不知道用户是否以正确的格式书写,他们可以在他们应该只写数字的地方写字母或其他符号。如果他们写数字以外的字符,我需要返回 - 1.)
到目前为止我的代码是
double x[100];
char c;
c = getchar();
do {
scanf("%lf",x)}
while (c!= '\n');
【问题讨论】:
-
您无法使用
scanf检测并从错误的用户输入中恢复。考虑改用fgets。 -
正如我之前建议的那样,您应该使用
strtok()标记将整行拆分为标记的参数,并将它们转换为浮动槽atof()。正如 melpomene 所建议的那样,使用来自stdin的gets()。 -
但是我需要使用 scanf 来解决这个问题。是否可以先将所有内容(double 和 char)存储到数组中,然后检查数组中的元素是否为数字?
-
你不能将 double 和 char 保存到一个 double 数组中......也许如果你定义一个字符串数组......
-
为什么要使用
scanf?是作业吗?