比较C中两个不同字符串的字符

时间:2014-02-04 21:04:21

标签: c string char compare equals

嗨我想在C中比较两个不同字符串的字符,但它不起作用,请帮助我:

int main (void)
{

    string b="blue";
    int len=strlen(b);
    int numbers[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
    string letters="abcdefghijklmnopqrstuvwxyz";
    int leng=strlen(letters);
    int key [len];


    for (int i=0; i<len;i++)
    {
        for (int j=0; j<leng;j++)
        {

            if (&b[i]==&letters[j])
            {
                //The program never comes inside here 
                key[i]=numbers[j];
            }
        }

    }

    //The result should be key[]={1,11,20,4 }
}

2 个答案:

答案 0 :(得分:3)

使用:

b[i]==letters[j]

而不是

&b[i]== &letters[j]

后者比较指针值。

答案 1 :(得分:0)

Whil @ouah给了你简短的回答(为什么你的代码不起作用),你可能有兴趣注意到一个角色的ascii值是它的“值”,所以你可以用<更高效地实现你想要的效果/ p>

string b="blue";
int len=strlen(b);
int key [len]; // not sure what version of C allows this... compiler needs to know size of array at compile time!


for (int i=0; i<len;i++)
{
    key[i]=b[i] - 'a';
}

对于“标准C”解决方案,您需要进行更多更改:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int main(void) {
  char b[] = "blue";
  int len = strlen(b);
  int *key;
  key = malloc(sizeof(b) * sizeof(int));

  for (int i=0; i<len;i++)
  {
    key[i]=b[i] - 'a';
    printf("key[%d] = %d\n", i, key[i]);
  }

}