分段故障(堆芯转储)C

分段故障(堆芯转储)C,c,C,这周我开始学习C语言,我对C语言编程完全陌生,当我尝试做这个练习时,这个错误在控制台中不断出现 #include <stdio.h> #include <stdlib.h> float calc(float *sall, float *salb) { float hraula, insspc; int naula; printf("Digite o valor da hora-aula e o numero de aulas dadas:");

这周我开始学习C语言,我对C语言编程完全陌生,当我尝试做这个练习时,这个错误在控制台中不断出现

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

float calc(float *sall, float *salb)
{
    float hraula, insspc;
    int naula;
    printf("Digite o valor da hora-aula e o numero de aulas dadas:");
    scanf("%f%i", hraula, naula);
    printf("Digite a porcentagem do inss retirada do salário:");
    scanf("%f",insspc);
    *salb = hraula * naula;
    *sall = *salb * ((100 - insspc) / 100);
    return 0;
}

int main()
{
    float salbt, sallq;
    calc(&sallq, &salbt);
    printf("O salário bruto é: %f R$, liquido: %f R$", salbt, sallq);
    return 0;
}
#包括
#包括
浮动计算(浮动*sall,浮动*salb)
{
浮子,浮子;
内诺拉;
printf(“奥拉时代的数字和奥拉时代的数字:”);
scanf(“%f%i”,赫拉乌拉,诺拉);
printf(“Digite a porcentagem do inss retirada do salário:”);
扫描频率(“%f”,insspc);
*salb=hraula*naula;
*sall=*salb*((100-insspc)/100);
返回0;
}
int main()
{
浮动salbt,SALQ;
计算(SALQ和salbt);
printf(“O salário brutoé:%f R$,liquido:%f R$”,salbt,sallq);
返回0;
}
希望有人能帮助我,谢谢

scanf(" %f%i", hraula, naula);
scanf(" %f",insspc);
这应该是因为scanf需要指向变量的指针:

scanf(" %f%i", &hraula, &naula);
scanf(" %f",&insspc);
将指针传递给接收变量,如下所示:

scanf("%f%i", &hraula, &naula);
if (scanf("%f%i", &hraula, &naula) != 2) {
    fprintf(stderr, "Failed to read hraula and naula\n");
    return -1;
}
同样地

scanf("%f", &insspc);
参考:

检查
scanf
的返回值也是一种良好的做法,以确保收集的值数量正确。大概是这样的:

scanf("%f%i", &hraula, &naula);
if (scanf("%f%i", &hraula, &naula) != 2) {
    fprintf(stderr, "Failed to read hraula and naula\n");
    return -1;
}
然后检查
calc()
的返回值:


你试过一步一步调试你的程序吗?启用编译器警告。哦,非常感谢!注意,这里不需要前导空格,因为
f
转换说明符已经跳过了前导空格字符。