我一直在尝试为大学作业编写一些代码,但我在编译时遇到了很多麻烦。我是C语言中的初学者,一般是编程,并且几乎没有找到这些错误的经验。在查看我的代码几个小时后,我已经设法纠正了其中的一些,但有一些是非常持久的,我无法确定它们。代码如下:
#include<stdio.h>
#include<stdlib.h>
#define ARRAYLENGTH 20
typedef struct{
char *name;
char *type;
char *value;
}variable;
int main(){
char calc[10];
char name1[20];
char name2[20];
int amount, i;
variable *varray;
int var1, var2;
printf("How many variables would you like to create? \n");
scanf("%d", amount);
varray = malloc(amount * ARRAYLENGTH * sizeof(variable));
for (i = 0; i < amount; i++){
if (varray[i].name == NULL || varray[i].type == NULL || varray[i].value == NULL){
printf("ERROR: Memory allocation failed. \n");
return 1;
}
}
您可能会看到一些未在此代码块中使用的声明变量。它们用于以后未见过的程序中。
我已经尝试使用Google搜索我的问题,并在Stack Overflow上搜索旧问题的解决方案,但似乎没有任何效果可用于这些特定错误,因此,我决定提出自己的问题。
任何和所有帮助都会非常感激。请尽量简化答案,因为正如我之前提到的,我是一名初学者。
答案 0 :(得分:2)
您正在分配&#34; varray&#34;在当前地址的价值,而不是地址本身,也铸造了明星在错误的地方,并且是不需要的:
varray = malloc(amount * ARRAYLENGTH * sizeof(variable));
答案 1 :(得分:0)
您发布的代码中的编译错误是:
pritnf
应阅读printf
。}
。还有一些严重的逻辑错误:
scanf("%d", amount);
应为scanf("%d", &amount)
amount
应初始化为0
varray[i].name == NULL
之前测试varray[i].name
。检查分配失败的方法是检查malloc
返回的指针是否为NULL。