c - 扫描到数组

标签 c arrays scanf

这是 2 个相同长度 vector 的点积函数。

我不明白如何构建数组,因为机器如何知道哪个输入到哪个输入(例如我想要 a={1,2,3} 但 123 的输入将是 a[0] = 123)...

我如何结束数组 [index] 输入以及如何结束整个数组。

#include <stdio.h>
#include <stdlib.h>
#define MAXINPUT 100
int dot_product(int v[], int u[], int n)
{
    int result = 0;
    int i;
    for (i=0; i < n; i++)
       result += v[i]*u[i];
    return result;
}
 int main(){
int v1[MAXINPUT];
int v2[MAXINPUT];
int count = 0 
int i,print;


printf(" first vector:");
for(i=0;i<MAXINPUT;i++){
  scanf("%d", &v1[i]);
  count +=1;
}
printf(" second vector:");
for(i=0;i<MAXINPUT;i++)
  scanf("%d", &v2[i]);
print = dot_product(v1, v2, count);
printf("v1*v2:%d",print);
return 0;
}

最佳答案

我在这里观察到的第一个问题是

 count +=1;

其中 count 是一个未初始化的自动局部变量,这使得它的初始值不确定。尝试使用该值调用 undefined behavior .

您应该将 count 初始化为 0

也就是说,在这里,您需要用户输入与第一个数组完全相同维度的第二个数组。如果没有发生这种情况,您的程序将再次崩溃,因为您没有再次初始化数组。

关于c - 扫描到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808143/

相关文章:

c - C 中的 fscanf 段错误

c - C语言中如何将文本文件中的字符放入数组中

javascript - 为什么数组字符串之间用逗号分隔?

arrays - 给定从 x 点到 y 点的两条付费道路,找到最便宜的道路

c - 如何将数组值复制到另一个数组

C如何拆分从.txt文件scanf读取的变量

c - 操作系统 - 意外输出

c - 位图点处理

c - Visual Studio : Different Size in Memory for same executable in XP and Windows7

c++ - scanf() 为最后一行输入提供错误的输出