2017-10-16 843 views
-2

所以基本上我有一個數組,看起來像這樣:C++字符數組查找/替換一個char

char array[25]; 

我有一個「X」擺在那裏,和24「0'。我試圖創建一個函數,我可以在數組中找到'X'的位置,所以每當輸入控件時我都可以移動它。下面是一些代碼,用於瞭解我在想什麼,我只是想不能把它放在一起。

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://計算器.COM /問題/ 388242 /對,最終-C-書指南和列表)?因爲它應該教會你自己解決問題的所有知識。 –

+0

使用std :: string! – 2017-10-16 07:01:13

回答

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::find(arr, arr + count, 'X') - arr; 
} 

輕微的扭曲與std::distance功能:

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

3.在開始傳遞和陣列的末尾:

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::vectorstd::array原始陣列。

0

我認爲Ron的答案更準確,因爲實際上我認爲在C中沒有像「XXX.length()」這樣的函數,所以您需要將數組的長度傳遞給函數。

+2

雖然我很欣賞我的反饋,但我想指出,評論應作爲評論發佈,而不是答案。請建立一些代表,以發表評論。 – Ron

0

在語言C中,您可以使用strstr函數。

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

在C++中使用std::find()或者只是改變arraystd::string和使用string::find

這裏是代碼:

#include <string> 

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

strstr要求參數是一個字符串。 OP的數組不是空終止的,因此不是字符串。 – user2079303

相關問題