C语言:在char数组中查找

时间:2014-02-18 22:59:23

标签: c arrays char lookup

我正在学习C语言。有人能给我一个下面问题的提示吗? (只是一个提示很好,我会从那里开始工作。)谢谢。

症状是打印的索引号始终为0.

print("\n\n  Lookdown: start with a value and get the index of the match  \n");
  char myArrayOfLetters2[] = {'w','x','y','z'};
  char myLookUpValue = "y";
  int myResultIndexNumber;
  int myArrayCounter;

  for (myArrayCounter=0; myArrayCounter<sizeof(myArrayOfLetters2); myArrayCounter++){
    if (myArrayOfLetters2[myArrayCounter] == myLookUpValue){
            myResultIndexNumber=myArrayCounter;} //found
  } // loop thorugh all members of array
print("myLookUpValue of 'y' returned index number of %d",myResultIndexNumber);

4 个答案:

答案 0 :(得分:2)

char myLookUpValue = "y";

"y"不是char,它是一个字符串(const char[])。适当时,数组会衰减到指向第一个元素的指针。您将该数组的地址(指向其第一个元素的指针)转换为char(打开警告)。你想要:

char myLookUpValue = 'y';

答案 1 :(得分:0)

使用单引号:

char myLookUpvalue = 'y';

答案 2 :(得分:0)

我觉得这很简单,我要说的是你要给字符串“y”赋一个字符串。第3行应该是char myLookUpValue ='y';

您的代码会将指针的最低8位分配给包含'y'的常量字符串,该字符串是内存位置,并且不太可能等于'y'的字符代码。

答案 3 :(得分:0)

这里有一个主要问题:

char myLookUpValue = "y";

表达式"y"字符串文字,其类型为“{element}}的2元素数组”,内容为char。要定义字符文字,请改用单引号:

{'y', 0}

除非它是char myLookupValue = 'y'; 或一元sizeof运算符的操作数,或者是用于在声明中初始化另一个数组的字符串文字,否则表达式为“N-element array of &“将被转换(”衰减“)到”指向T的指针“类型的表达式,表达式的值将是数组的第一个元素的地址。

在您的代码中,表达式T不是"y"或一元sizeof运算符的操作数,虽然它用于初始化声明中的某些内容,但某些内容并非如此t &的数组,因此它被转换为指针类型,其值是存储中字符串的第一个字母的地址。然后将该地址值转换为char类型并分配给char;结果很可能不是myLookupValue'w''x''y'中的任何一个。所以比较失败了。