C SIMPLE温度转换器/摄氏度到华氏度UNKNOWN错误&产量

时间:2013-10-16 22:33:10

标签: c converter temperature

我几天前刚开始使用C语言进行编程,并且有几个问题:

以下程序将摄氏度转换为华氏度,反之亦然。我收到了分段错误。

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

float c2f(float);
float f2c(float);

float Fahrenheit,Celsius;

int main(int argc, char *argv[])
{

/** 
 * Check for the expected number of arguments (3)
 * (0) program name
 * (1) flag
 * (2) temperature
 */
if (argc!=3)
    printf("Incorrect number of arguments");

if (!strcmp(argv[1], "->f"))
{
   // convert the string into a floating number
   char *check;
   float Celsius = strtod(argv[2], &check);

// process from celsius to fahrenheit
   Fahrenheit = c2f(Celsius);
   printf("%5.2f°C = %5.2f°F",Celsius, Fahrenheit);
}   
else if (!strcmp(argv[1], "->c"))
{
   // convert the string into a floating number
   char *check;
   float Fahrenheit = strtod(argv[2], &check);

   // process from fahrenheit to celsius
   Celsius = f2c(Fahrenheit);
   printf("%5.2f°F = %5.2f°C", Fahrenheit, Celsius);


}   
else
   printf("Invalid flag\n");
} // main


float c2f(float c)
{
  return 32 + (c * (180.0 / 100.0)); 
} 

float f2c(float f)
{
  return (100.0 / 180.0) * (f - 32);
}

另外,我希望我的输出是这样的:

**指TemperatureConverter - &gt; f 10.0

10.00°C = 50.00°F **

这应该将10C转换为F.

对于F到C,输出应为:

  

TemperatureConverter - &gt; c 50.0

50.00°F = 10C **

3 个答案:

答案 0 :(得分:3)

错误是     if(!strcmp(argv [1],“ - &gt; f”)

它缺少一个最后的括号,应该是

if (!strcmp(argv[1], "->f"))

你犯了同样的错误两次。 1表示strcmp(),1表示if()

你应该包括string.h。另外,你应该在main之前输入函数f2c和c2f。

你也写过

prinf

在f

之前尝试使用t
printf

最后你需要

exit(0);

之后的第一个if。例如

if (argc!=3)
{
    printf("Incorrect number of arguments");
    exit(0);
}

否则程序的其余部分会运行并且您会遇到seg错误。欢迎来到编程。

答案 1 :(得分:0)

轻微挑剔:

float c2f(float);
float f2c(float);

虽然技术上是正确的,但请记住在函数声明中包含变量名称。它使阅读更容易。

作为一个例子

float c2f(float c);

答案 2 :(得分:0)

<强> I used this code :

/* Declare Initial library for functions */
    #include<stdio.h>
    #include<conio.h>

    /* Main function*/
    void main()
    {
     /* data type(float),variable(c,f)*/   
     float c, f;

    /* printf function from stdio.h library , for printing level*/
     printf("Enter temp. in Celsius: ");

    /* scanf for inserting data in variable*/
     scanf("%f",&c);

      /* Fahrenheit rules*/
     f = c * 9/5 + 32;

     /* Result will display in this line */
     printf("Temp. in Fahrenheit: %f",f);

    /* getch function from conio.h library, used to write a character to screen*/
     getch();
    }