嗨我想在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 }
}
答案 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]);
}
}