gpt4 book ai didi

c - scanf() 到 C 中的一维数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:38 25 4
gpt4 key购买 nike

我在将用户输入从终端读取到我的数组时遇到问题。

数组“a”具有动态大小。用户输入的多项式决定数组的大小。

一旦编译并运行:

Enter the order number:
3
Enter your constant:
-90
Enter coefficient # 0
8
Enter coefficient # 1
4
Enter coefficient # 2
35
Enter coefficient # 3
54
0 8.000000
1 4.000000
2 0.000000
3 0.000000

在调试行上,我只是将数组报告给用户。由于某些原因,它对数组的后半部分返回零。我不知道可能是什么问题。任何帮助将不胜感激。

附言。忽略 eval 函数。

这是我正在处理的代码:

//import required libraries
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// function prptotype
double eval(double a[], double x, int n); //n is max degree
//global variables
int N = 0;//N is the polynomial order
double *a;//array
double x; // constant
//main function
int main()
{
printf("%s\n", "Enter the order number:");
scanf("%d", &N); // user input for the order numbers
while (N < 1) //input debuger
{
printf("%d %s\n%s\n", N,"is NOT a positive and non-zero number", "Enter a positive and non-zero integer:" );
scanf("%d", &N); // user input for the order numbers
}
a = malloc ((N + 1) * sizeof(int));// assigning the array size in respect with user input
printf("%s\n", "Enter your constant:" );
scanf("%lf", &x);// user input for "x" constant
for (int i = 0; i < N + 1; ++i)
{
printf("Enter coefficient # %d\n", i);
scanf ("%lf", &a[i]);
}
/* Debug */
for (int i = 0; i < N + 1; ++i)
{
//a[i] = 0;
printf("%3d%13lf\n", i, a[i]);
}
}

//eval function
double eval(double a[], double x, int n)
{

}

最佳答案

第一个问题是——

a = malloc ((N + 1) * sizeof(int));  //you allocate for N+1 integers

你没有分配足够的内存(你需要为 N+1 double 分配)。a 是一个 double * 并且您使用 sizeof(int) 。更正为 -

a = malloc ((N + 1) * sizeof(double));

打印double的东西使用%f而不是%lf(仅用于scanf)-

printf("%3d%13lf\n", i, a[i]); // -> use %f
^^

注意 - 不要忘记释放分配的内存。顺便说一句,您的代码中没有数组。

关于c - scanf() 到 C 中的一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36394013/

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