2017-10-16 847 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

相关问题