如何使用字符数组来标识字符串

时间:2014-02-22 21:56:48

标签: c

对于我的类,我们使用char数组作为字符串。如果我要使用if else语句,如果我对其进行了修改,那么这样的工作是否会起作用?

我知道像这样的数组会将每个字符分解成简单的字母。要使用if else语句,我必须使用数组[1] =='H'等等。

如果我输入“Alas”,有没有办法修改下面的代码以吐出我想要的信息。现在,它只进入else部分。

int main()
{
    char s[10];

    printf("Yo, this is a string: ");
    gets_s(s);

    if (s == "Alas")
    {
        printf("B ");
    }
    else
    {
        printf("A");
    }

    system("pause");
}

4 个答案:

答案 0 :(得分:7)

使用strncmp标准库函数比较两个字符串。包括<string.h>标题。

strncmp(const char *s1, const char *s2, size_t n)

返回值:

  

成功完成后,strncmp()将返回大于,等于或小于0的整数,如果s1指向的可能以null结尾的数组大于,等于或者小于s2分别指向的可能以null结尾的数组。

答案 1 :(得分:1)

现在在你的代码中s是指针,“Alas”被视为指针。指向另一个内存区域的指针。这就是他们总是不同的原因。使用

if (!strcmp(s, "Alas"))

答案 2 :(得分:0)

类似的东西:

int main()
{
    char s[10];

    printf("Yo, this is a string: ");
    gets_s(s);

    if (strcmp(s, "Alas") == 0)
    {
        printf("B ");
    }
    else
    {
        printf("A");
    }

    system("pause");
}

答案 3 :(得分:0)

如果您唯一想知道的是两个字符串是否相同,您可以自己定义一个函数来检查两个字符串的每个字符,一旦遇到差异就返回0,返回a 1只有在同时遇到终止零时才会出现:

SameStrings( char * s1, char * s2 ) {
    for ( int i = 0; s1[i] && s2[i]; i++ )
        if ( s1[i] != s2[i] )
            return 0;

    // if the programme advanced this far
    // either one of both should be 0
    return s1[i] == s2[i];

    // if they are equal, then both must be 0, in which case it will return 1
    // else it will return a 0
}

您可以为该函数添加一个参数,这个整数将限制要检查的最大字符数,例如,您希望SameStrings( "lalaqwe", "lalaasd", 4 )返回true。

如果你不想为一个比你需要的功能更多的函数包含一个库,这是很好的...