if语句中的C字符串比较不起作用

时间:2018-01-07 00:33:17

标签: c

我想在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);

那么,我做错了什么? 感谢。

5 个答案:

答案 0 :(得分:1)

如果字符串等效地比较,则

strcmp会返回0

尝试否定if语句,或明确检查0

if (!strcmp(...))
if (strcmp(...) == 0)

strcmp Reference

  

返回值

     
      
  • 如果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);
}