2016-10-24 2 views
0

안녕하세요 저는 배열을 반복하고 대문자 M이있는 인덱스 번호를 선택한 다음 해당 인덱스 번호를 반환하는 함수를 사용해야하는 프로그램을 작성하고 있습니다. 자본 M이 발견되지 않으면 -1의 값을 반환합니다. 여기에 내가 지금 가지고있는 것이있다. (나는 왼쪽 필드에서 탈출구가 될 수있다. 이 문자열의 첫 번째 요소는 자본 M은이 예제에서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; 
} 

은, 의도 한 결과를 컴파일하고 실행했을 때 그러나, 내 결과가 77, 0입니다. 어떤 도움을 주셔서 감사합니다!

답변

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 다른 문을 제거하려는 외에, 당신은 에 INDEXM을 문자 값을 할당하는 사실이다

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; 
}