简单C程序导致分段错误

时间:2013-09-08 01:42:25

标签: c segmentation-fault

我只是在学习C而我正在尝试编写一个简单的程序来进行简单的计算。程序编译得很好,但是当我输入值并尝试运行它时,我得到“分段错误”。有人可以帮我理解为什么会发生这种情况以及究竟什么是分段错误?

代码:

#include <stdio.h>

float main()
{
  int price, service;
  float annual, value;

  printf("Enter the purchase price, years of service, annual depreciation:\n");
  scanf("%d %d %f\n", price, service, annual);

  value = (annual * service) - price;

  printf("The salvage value of the item is %f", value);
  return 0;
}

非常感谢任何和所有帮助!谢谢!

3 个答案:

答案 0 :(得分:3)

这是错误的

 scanf("%d %d %f\n", price, service, annual);

应该是:

 scanf("%d %d %f\n", &price, &service, &annual);

答案 1 :(得分:2)

您的程序存在两个问题。首先,main()应返回int,通常为零,表示成功,其他值为失败。将float main ()更改为int main(),看看是否有所作为。

其次,正如其他两个答案所指出的那样,你对scanf()的参数应该是保存输入值的变量的地址:

scanf("%d %d %f\n", &price, &service, &annual);

答案 2 :(得分:1)

更改

scanf("%d %d %f\n", price, service, annual);

scanf("%d %d %f", &price, &service, &annual);

因为scanf总是期望指针作为其参数。同时从\n的格式说明符中删除scanf() 同时将float main()更改为int main()