gpt4 book ai didi

c - 有关 scanf 和内存分配的帮助

转载 作者:行者123 更新时间:2023-11-30 18:06:58 30 4
gpt4 key购买 nike

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

#define MAX 50

float** getdata(void);
void calculations(float* fPtr);
//void printoriginal(float* values, int inputnum, float* fPtr);

int main(void)
{
float** fPtr;
float* values;

fPtr = getdata();
calculations(*fPtr);
int element;
// printoriginal(*values, inputnum, *fPtr);



system("PAUSE");
return 0;
}

float getvalues(void)
{
float* values = (float*)calloc(*inputnum, sizeof(float));

float** getdata(void)
{
int i;
int n;
float** fPtr;
int* inputnum;

printf("How many values do you want to input into the array?");
scanf("%d", inputnum);

float* values = (float*)calloc(*inputnum, sizeof(float));

if (values == NULL)
{ printf("Memory overflow\n");
exit(101);
}


for(i = 0; i < *inputnum; i++)
{
n = i + 1;
printf("Please enter your %d number: ", n);
scanf("%f",(values+i));
}


fPtr = (float**)calloc(*inputnum+1, sizeof(float*));
if (fPtr == NULL)
{ printf("Memory overflow\n");
exit(101);
}

for(int c=0; c < *inputnum; c++)
{
*(fPtr+i) = (values+i);
}
printf("%f", values+2);

return fPtr;
}

我扫描了 getdata 中的值,但我正在扫描垃圾。我很确定我的 scanf 已关闭。另外,我如何能够通过引用传回我的值数组?我对此也感到非常困难。感谢大家。

最佳答案

而不是

int * inputnum;scanf( ..., inputnum );

你想要:

int inputnum;scanf( ..., &inputnum );

要么这样,要么您需要插入 inputnum 的分配:

/* Very non-C-worthy code sample */int * inputnum;inputnum = malloc( sizeof *inputnum );if( inputnum == NULL ) {    perror( "malloc" );    exit( EXIT_FAILURE );}scanf( ..., inputnum );

但这对于任何熟悉 C 的人来说都会显得很奇怪(除非有其他原因,在此情况似乎没有任何原因。)

您遇到的问题是 scanf 是将接收到的值存储在指向的位置通过 inputnum,这是一个虚假位置,因为 inputnum未初始化。

关于c - 有关 scanf 和内存分配的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165926/

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