为什么程序没有通过Askdisks函数?

时间:2018-01-17 11:37:27

标签: c function pointers

我认为这是一个简单的错误,但我是初学程序员,所以也许可以帮助我?这是我的主要,我称之为Askdisksfunction并给它numberofdisks的地址。当我运行程序时,没有任何事情发生。我希望有人可以帮助我吗?

int main()
{
    int numberofdisks;
    Askdisks(&numberofdisks);
    printf("%d", numberofdisks);

    return 0;
}

void Askdisks(int *pNumberofdisks)
{
    int vraagdisks = 0;
    printf("How much disks does the tower has to have?(max 16)\n");
    scanf("%d", &vraagdisks);
    if(vraagdisks < 17 && vraagdisks > 0)
    {
        *pNumberofdisks = vraagdisks
    }
    else if(vraagdisks == 0)
    {
        printf("Stopping function\n");
        *pNumberofdisks = 0;
    }
    else if(vraagdisks > 16 || vraagdisks < 0)
    {
        printf("That is not a valid number of disks! Try again...\n");
        Askdisks(numberofdisks);
    }
}

3 个答案:

答案 0 :(得分:2)

您的程序有一些错误,从技术上讲无法编译。这并没有解释你是如何运行它但“没有任何反应”。但是,修复它们会使程序执行您正确描述的内容。

  1. 在使用之前将原型添加到 for(var i = 0; i < data.length; i++){ username = data[i].username; console.log(username); usersurname = data[i].usersurname; cellnumber = data[i].cellnumber; displayname = data[i].displayname; profilepicture = data[i].profilepicture; for(var j = 0; j < data[i].projects.length; j++){ dateadded = data[i].projects[j].dateadded; console.log(dateadded); notes = data[i].projects[j].notes; image = data[i].projects[j].image; for(var k = 0; k < data[i].projects[j].task.length; k++){ taskname = data[i].projects[j].task[k].taskname; console.log(taskname); taskdescription = data[i].projects[j].task[k].taskdescription; taskimage = data[i].projects[j].task[k].taskimage; } } } 或移动其定义。
  2. 您在第一个Askdisks内的语句末尾缺少分号。
  3. 当您递归调用if时,请为其指定相同的pointe而非未知标识符。
  4. 添加标准IO的标题,以防您不是。
  5. Askdisks

答案 1 :(得分:1)

您的程序无法编译。 原因有两个:

1。*pNumberofdisks = vraagdisks缺少;

2。Askdisks(numberofdisks);

numberofdisks中声明了

main,因此您在numberofdisks undeclared函数中收到错误Askdisks。 相反,您应该将该行更改为:

 Askdisks(pNumberofdisks);

答案 2 :(得分:0)

首先,第一个条件“if”的陈述中缺少一个分号。 第二,你递归调用函数的最后一个“else if”语句,但是你给它一个在其范围内不存在的变量。 当你在main()函数中第一次调用函数时,有一个名为numberofdisks的变量。 但是在您的函数中没有包含相同名称的变量,但是有另一个值保持相同的值pNumberofdisks。 解决问题的方法就是用

替换前面提到的行

Askdisks(pNumberofdisks);

请注意,我们使用Askdisks(pNumberofdisks);而不是Askdisks(*pNumberofdisks);。 因为Askdisks函数将指向整数的指针作为参数,pNumberofdisks是指向int的指针,而*pNumberofdisks是指向int的指针。