2016-09-19 9 views
-2

私は単語のアルファベット指数を単一の文字列で取得しようとしています。私はforループを使用して単語の関数を再利用し、インデックスを別の配列に格納し、それに応じて並べ替えたいと思っていました。コンパイル中最初の文字列を取得してインデックスを取得しますか?

、コンパイラは私にエラーを与えている:

Subscripted value is not array, pointer or vector. 

私は文字列は文字の配列であると考え、私の基本的な理解に。私が間違っている?

マイコード:

#include <stdio.h> 
int findIndexOfAlphabet(char x); 

int main(int argc, const char * argv[]) { 


    char word = "water"; 
    int number = findIndexOfAlphabet(word); 
    printf("%d\n",number); 


} 

int findIndexOfAlphabet(char x) 
{ 
    char trial = x[0]; 
    int index; 
    for (int i = 'a'; i <='z'; i++) 
    { 
     if (trial == i) 
     { 
      index = i; 
      break; 
     } 
    } 
    return index; 
} 
+0

あなたは '文字を使用しているように見えます'と' char * 'は同じ意味です.... – John3136

+1

' c "char * x" – kaylum

+0

int findIndexOfAlphabet(char [] x) –

答えて

0

コンパイラが正しいです。あなたはスカラーchar

int findIndexOfAlphabet(char x) 

としてxを定義したが、配列としてそれを使用する:コンパイルとx[0]は、コンパイラが文句を言うために起こっている遭遇したときに機能findIndexOfAlphabet

char trial = x[0]; 
+0

これは問題の1つを特定します。少なくとももう一つはあります。そして、問題を特定することに加えて、良い答えは解決策を提示しなければなりません。 – kaylum

1

xは、charとして定義されています。

適切にあなたの関数を宣言します。

int findIndexOfAlphabet(char*); 

と、定義中:char*として

int findIndexOfAlphabet(char* x) 
{ 
// body similar 
} 

そしてwordなくcharとして:

char* word = "water"; 
関連する問題