2016-10-24 6 views
0

こんにちは私は、配列を反復処理し、大文字のMを持つインデックス番号を取り出し、そのインデックス番号を返す関数を使用する必要があるプログラムを作成しています。大文字Mが見つからない場合は、-1の値を返します。ここには私が現時点で持っているものがあります(私は機能の初心者であるため、このまま左のフィールドに出ることができます)。この例ではC言語の基本関数

#include <stdio.h> 

int findM (char string[], int numVals){ 
int i = 0; 
int indexM; 

for (i = 0; i < numVals; ++i){ 
if (string[i] == 'M'){ 
    indexM = string[i]; 
    break; 
} 
    else { 
    indexM = -1;    
    } 
    } 
    return indexM; 
} 

int main(void) { 
    char userString [15] = "M as in Mancy"; 
    printf("%d",findM(userString, 15)); 
    return 0; 
} 

コンパイルして実行したときに、この文字列の最初の要素は、資本Mであるよう意図された結果は、0である、しかし、私の結果は77です。助けてくれてありがとう!

答えて

1

あなたはindexM変数にMのASCI値を挿入しているのでこれが得られますが、代わりにその文字Mのインデックスを保持する必要がありますか?ので、あなたのfindM機能で以下のように実行します。アブドゥルの答えが真である

for (i = 0; i < numVals; ++i){ 
if (string[i] == 'M'){ 
    indexM = i; 
    break; 
} 
    else { 
    indexM = -1; 
    } 
    } 
    return indexM; 
} 
1

私はunnessary他声明

int findM(char string[], int numVals) { 
    int i = 0; 
    int indexM=-1; 

    for(i = 0; i < numVals; ++i) { 
     if(string[i] == 'M') { 
      indexM = i; 
      break; 
     } 
    } 
    return indexM; 
} 
を取り除きたいのほかに、あなたはindexM にchar値を代入しています
関連する問題