-2

几天前我刚开始用 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);
}

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

**> 温度转换器 ->f 10.0

10.00°C = 50.00°F**

这应该将 10C 转换为 F。

对于 F 到 C,输出应为:

温度转换器->c 50.0

50.00°F = 10C**

4

3 回答 3

3

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

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

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

你犯了同样的错误两次。strcmp() 有 1 个括号,if() 有 1 个括号

你应该包括 string.h。此外,您应该将函数 f2c 和 c2f 放在 main 之前。

你也写了

prinf

在 f 之前尝试 at

printf

最后你需要

exit(0);

在第一个 if 之后。例如

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

否则程序的其余部分运行,你得到段错误。欢迎编程。

于 2013-10-16T22:37:18.450 回答
0

轻微挑剔:

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

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

举个例子

float c2f(float c);
于 2013-10-16T23:21:20.763 回答
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();
    }
于 2017-08-01T09:46:25.430 回答