如何检查User输入的String是否与某些内容相同

时间:2017-05-24 16:50:55

标签: c

我有这个代码示例。有一个scanf来保存键盘输入的String值(即Lotus)。但即使我正确输入 Lotus 这个词,它也不会执行相关的if语句。 **我的scanf功能???

是否有任何问题
#include<stdio.h>
    int main()
    {
        char landType,houseType[100],wantToContinue,wantToContinue2;
        float installment;
        wantToContinue='Y';
        while(wantToContinue == 'Y' || wantToContinue == 'y') {
            printf("Land Type : ");
            scanf(" %c",&landType); 
            if(landType == 'A') {
                printf("Type of House: ");
                scanf(" %s", houseType);
                if(houseType == "Lotus") { 
                   //this won't go inside if statement even if I type Lotus correctly
                    installment=4000000-500000;
                    printf("Monthly Installment : R.s %.2f\n",installment/120);
                    printf("Do you want to Continue?(Y/y or N/n) : ");
                    scanf(" %c",&wantToContinue2);                  
                    if(wantToContinue2 == 'Y' || wantToContinue2 == 'y') {
                        wantToContinue=wantToContinue2;
                        printf("\n");
                    }else{
                        wantToContinue='N';
                    }
                }   
             }
          }
      }

2 个答案:

答案 0 :(得分:0)

比较C中的两个字符串时要小心。您应该使用while ($row20 = mysqli_fetch_array($res)) { $fecha[] = $row20['nombre_catalogo']; } $fecha = array_chunk($fecha, 5); foreach($fecha as $data) { foreach($data as $fec) { echo $fec; } # echo implode('', $data); // implode also can be used instead of nested loop. echo '</br>'; } 库中的strcmp函数,如下所示:

string.h

当您编写if(strcmp("Lotus", houseType) == 0) 时,实际上是在比较两个字符串的基址而不是它们的实际内容。

答案 1 :(得分:0)

在C中,无法使用==比较字符串。这是因为字符串不是C中的基本数据类型,即C本身并不了解如何比较它们 - 您必须使用函数。

用于比较C中的字符串的标准函数是strcmp(),例如:

if (strcmp(houseType, "Lotus") == 0)
{
    // do some work if the strings are equal
}

为了进一步解释,您使用housetype == "Lotus"比较字符串的初始尝试实际上将存储字符数组houseType的第一个字符的地址与字符数组的第一个字符的地址进行比较{存储了{1}}。

这是因为C中的字符串只是字符数组 - 它们不是固有的数据类型,因此C不能理解整数数组和字符数组之间的区别,它们都只是排列的数字在内存中的某个地方连续处理,除非你专门使用对它们进行操作的代码作为字符串,否则它会对它们进行处理。