分段故障(堆芯转储)C
这周我开始学习C语言,我对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:");
#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
转换说明符已经跳过了前导空格字符。