如何输入和比较字符串

时间:2016-10-11 17:21:35

标签: c

我是C的新手,我需要帮助。 这段代码不起作用,即使我输入伦敦输入我收到来自其他的消息:“再试一次”。

int main()
{
    char capitalCity;

    scanf("%s", &capitalCity);


    if (capitalCity == 'London'){
        printf("Is the capital city of UK.");
    }
    else{
        printf("Try again.");
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

C编程语言中没有string数据类型。 C中的Strings表示为字符数组。

在C中,char是表示字符的数据类型(C中的 char 表示字符类型,适用于存储简单字符 - 传统上是ASCII编码中的字符。) 。因此,您需要做的就是声明一个char数据类型数组来表示C中的string。该数组中的每个元素都将包含字符串的字符。

此外,C中的运算符= =,!=,+ =,+是为C中的内置数据类型定义的,因为C中没有运算符重载,所以不能将这些运算符与C一起使用-String as C-Strings不是C编程语言中的内置数据类型。

注意:C-Strings实际上是以Null结尾的char数据类型数组。这意味着,C中任何C字符串中的最后一个字符将用于存储标记字符串结尾的空字符('\ 0')。

Header文件具有预定义的函数,可用于操作C-String(以空数终止的char数据类型数组)。你可以在这里阅读更多相关信息。

所以,你的程序应该是这样的:

#define MAX_CSTR_LEN 100
int main()
{
    char capitalCity[MAX_CSTR_LEN + 1]; ///An extra position to store Null Character if 100 characters are to be stored in it.

    scanf("%s", capitalCity);


    // Use strcmp to compare values of two strings.
    // If strcmp returns zero, the strings are identical
    if (strcmp(capitalCity, "London") == 0) { 
        printf("Is the capital city of UK.");
    }
    else {
        printf("Try again.");
    }
    return 0;
}

此外,您必须在C中使用单引号作为字符文字和双引号。

答案 1 :(得分:-1)

首先,您需要学习很多东西。我正在尽力向你解释。

如果输入字符串,则无法使用==运算符进行比较。你需要使用在strcmp()头文件中声明的<string.h>函数,它逐字符地比较并返回0如果两个字符串相等,则返回非零值。

#include <stdio.h> 
#include <string.h> //for strcmp function
#define SIZE 30   //max size buffer for input

int main(){
    char capitalCity[SIZE];
    scanf("%s", capitalCity);
    if(strcmp(capitalCity, "London") == 0){ //if(capitalCity == 'London') won't work in case of string comparison 
        printf("Is the capital city of UK.");
    } else{
        printf("Try again.");
    }
    return 0;
}

进一步阅读http://www.geeksforgeeks.org/c/