我想在if语句中比较以前键入的字符串,但它不起作用。我尝试过这个帖子中解释的内容:Compare with string in if statement doesn't work 但没有运气。
这是我的代码:
#include <stdio.h>
#include <string.h>
char inputUnit[2];
float inputValue, returnValue;
int main() {
printf("Enter value to convert: ");
scanf("%f", &inputValue);
printf("Enter unit to convert: ");
scanf("%s", inputUnit);
if (strcmp(inputUnit, "in")) {
returnValue = inputValue * 2.54;
printf("%.2f %s = %.4f cm\n", inputValue, inputUnit, returnValue);
}
}
return (0);
那么,我做错了什么? 感谢。
答案 0 :(得分:1)
strcmp
会返回0
。
尝试否定if语句,或明确检查0
。
if (!strcmp(...))
if (strcmp(...) == 0)
返回值
- 如果lhs以字典顺序出现在rhs之前,则为负值。
- 如果lhs和rhs相等则为零。
- 如果lhs以字典顺序出现在rhs之后,则为正值。
答案 1 :(得分:0)
如果字符串匹配,则strcmp
函数返回0。所以你需要检查函数是否返回0。
if (strcmp(inputUnit, "in") == 0) {
答案 2 :(得分:0)
如果字符串相同,则strcmp返回0。 “man strcmp”
答案 3 :(得分:0)
eval("pattern"+i)
返回0。
应该是
strcmp
见
man strcmp
if (strcmp(inputUnit, "in") == 0) { returnValue = inputValue * 2.54; printf("%.2f %s = %.4f cm\n", inputValue, inputUnit, returnValue); }
<强>描述强>
#include <string.h> int strcmp(const char *s1, const char *s2);
函数会比较两个字符串strcmp()
和s1
。 如果s2
,则返回小于,等于或大于零的整数 发现分别小于,匹配或大于s1
。
答案 4 :(得分:0)
字符串比较函数strcmp如果两个字符串相等则返回零,否则返回非零数字。因此,如果语句不等于!strcmp,则使用此处可以使用(inputUnit,&#34; in&#34 ;)。strcmp函数返回0并返回true,我使用的if条件不是等号&#39;!&#39;所以!0 = 1则if子句变为真&amp;它执行if body。
#include <stdio.h>
#include <string.h>
char inputUnit[2];
float inputValue, returnValue;
int main() {
printf("Enter value to convert: ");
scanf("%f", &inputValue);
printf("Enter unit to convert: ");
scanf("%s", inputUnit);
if (!strcmp(inputUnit, "in")) {
returnValue = inputValue * 2.54;
printf("%.2f %s = %.4f cm\n", inputValue, inputUnit, returnValue);
}
return (0);
}