【发布时间】:2018-02-19 02:42:57
【问题描述】:
我搜索了论坛,但似乎找不到适合我特定问题的答案(我也尝试过 Google)。我似乎在正确比较字符串(“是”、“是”、“否”、“否”)时遇到问题。我最初尝试了 if else ,但我认为 while 循环更有效。有什么建议?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double far = 0;
double cel = 0;
double userValue = 0;
double endResult = 0;
int choice;
char *decision = "";
int main()
{
conversion();
return 0;
}
conversion() {
printf("Please enter a 1 for Celsius to Fahrenheit conversion OR\n a 2
for
Fahrenheit to Celsius conversion\n");
scanf("%d", &choice);
if(choice == 1) {
printf("Please enter a value for Celsius. Example 32 or 32.6\n");
scanf("%lf", &userValue);
endResult = (userValue * (9.0/5.0) + 32);
printf("%lf\n", endResult);
yesOrNo();
}
else
printf("Please enter a value for Fahrenheit. Example 212 or 212.6\n");
scanf("%lf", &userValue);
endResult = (userValue -32) * (5.0/9.0);
printf("%lf\n", endResult);
yesOrNo();
}
yesOrNo() {
printf("Do you want to continue? Enter Yes or No\n");
scanf(" %s", &decision);
while(decision == "Yes" || decision == "yes") {
conversion();
}
exit(0);
}
【问题讨论】:
-
不要对字符串使用 == 比较器,而是使用
stricmp -
你需要使用
strcmp来比较字符串的内容,否则你只是比较它们是否在同一个地址。 -
请注意,您将在每次转换时进行递归:main() 调用转换(),转换调用 yesOrNo(),yesOrNo() 调用转换,等等。您冒着堆栈溢出异常的风险。
-
char *decision = "";...scanf(" %s", &decision);——这是错误的。decision是一个指向空字符串的指针。您需要一个数组来保存用户输入,例如char decision[100];。然后使用scanf("%99s", decision);获取用户输入。
标签: c string while-loop