2017-10-16 17 views
-2

を交換だから、基本的に私はこのようになります配列を持っています。私は、配列内の 'X'の位置を見つけることができる関数を作成しようとしているので、コントロールが入力されるたびに移動することができます。ここで私は何を考えているのか、一緒に置くことはできません。C++ char配列は、検索/文字

int findX(){ 
    //make this find the location of X out of the 25 char array. 
    //then return the slot of X as a number, like if it's in the 20th slot, then it will return 20 ? 
    //return(locationOfX); 
} 
+6

おそらくあなたは[良い初心者帳](HTTP必要があります:// stackoverflowのを.com/questions/388242/the-definitive-c-book-guide-and-list)?あなた自身であなたの問題を解決するために知っておく必要があるすべてを教える必要があるからです。 –

+0

std :: stringを使用してください! –

答えて

1
for(int i = 0; i <= array.Length; i++) 
{ 
    if(array[i] == 'X') 
    { 
     return i; 
    } 
} 

これはそれを行う必要があり、私はそれをテストする機会がなかったが、それは、配列要素数で

0

パスを動作するはずです。
1. マニュアルアプローチ:

int findX(char arr[], int count){ 
    for (int i = 0; i < count; i++){ 
     if (arr[i] == 'X'){ 
      return i; 
     } 
    } 
    return -1; 
} 

2. std::find機能:初めに

int findX2(char arr[], int count){ 
    return std::distance(arr, std::find(arr, arr + count, 'X')); 
} 

3.パス:std::distance機能付き

int findX2(char arr[], int count){ 
    return std::find(arr, arr + count, 'X') - arr; 
} 

わずかなねじれ配列の終わり:

int findX3(char* arrbegin, char* arrend){ 
    return std::distance(arrbegin, std::find(arrbegin, arrend, 'X')); 
} 

などを使用します。練習として残し

std::cout << findX3(std::begin(arr), std::end(arr)); 

4.テンプレート機能を。
生の配列に対して またはstd::arrayを好むと言われています。

0

実際に私はCでは "XXX.length()"のような関数がないと考えているので、関数の配列の長さを渡す必要があるので、Ronの答えはより正確だと思います。

+2

フィードバックをいただければ幸いですが、コメントは回答ではなくコメントとして投稿する必要があります。コメントを投稿できるように担当者を募集してください。 – Ron

0

言語Cでは、strstr機能を使用できます。 Cで

#include "string.h" 
int findX(char array[]) 
{ 
    char *result = strstr(array, "s"); 
    return result - array; 
} 
int main() 
{ 
    char array[25]; 
    int index = findX(array); 
} 

std::find()を使用するか、単にstd::stringarrayを変更し、ここstring::find

を使用する++コードです:

#include <string> 

int main() 
{ 
    std::string array = "oooooooooosoooooooooooooo"; 
    int index = array.find("s"); 
    return 0; 
} 
+0

strstrでは、引数が文字列であることが必要です。 OPの配列はnullで終了していないため、文字列ではありません。 – user2079303