我几天前刚开始使用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 **
答案 0 :(得分:3)
错误是 if(!strcmp(argv [1],“ - &gt; f”)
它缺少一个最后的括号,应该是
if (!strcmp(argv[1], "->f"))
你犯了同样的错误两次。 1表示strcmp(),1表示if()
你应该包括string.h。另外,你应该在main之前输入函数f2c和c2f。
你也写过
prinf
在f
之前尝试使用tprintf
最后你需要
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();
}