Как мне получить доступ к одному элементу массива за раз, используя указатель на массив символов? - PullRequest
0 голосов
/ 22 сентября 2018

Итак, в приведенном ниже коде я пытаюсь найти subArr в arr.Но, как вы видите, я не могу правильно использовать цикл for, чтобы потом начать сравнение.Что я должен принять как удовлетворительное условие для доступа к каждому символу этого элемента массива (скажем: cream в позиции 0) в соответствующей позиции?А затем сравните его с subArr символ за символом, чтобы увидеть, существует ли subArr в arr Моя конечная цель - выяснить, существует ли subArr в arr.если это так, то return 1, иначе return 0

Я не буду использовать strstr().

int myStrStr (char * arr, char * subArr, char * buffer) {
// printf("%s\n", arr);
// printf("%s\n", subArr);
// printf("%s", buffer = subArr);

int count = 0;

for(int i = 0; arr[i] != '\0'; i++) {
    //for(int j = 0; needle[j] != '\0'; j++) {
    if(arr[i] == subArr[i]) {
    buffer[count] = arr[i];
    count++;
    printf("Array: %c\n", arr[i]);
    printf("SubArray: %c\n", subArr[j]);
    //printf("%s", buffer = subArr);
    //}
}
//printf("\nBuffer: %s\n",buffer);
int result = strcmp(buffer, needle);
if(result == 0) {
    return 1;
} else {
    return 0;
}
} 

int main() {
    char arr[][10] = {"cream","factory","camel","crosses","eating","cake"};
    char subArr[][10] = {"cream","at","am","cross","in","kk"};
    char buffer[160];

    int answer1 = myStrStr(arr[0],subArr[0], buffer);
    int answer2 = myStrStr(arr[1],subArr[1], buffer);
    int answer3 = myStrStr(arr[2],subArr[2], buffer);

return 0;
}

1 Ответ

0 голосов
/ 22 сентября 2018

Вот простой (грубый) пример, чтобы прояснить ситуацию:

 #include<stdio.h>

 int num;                        //SECOND DIMENSION OF THE 2D ARRAY

 void fun(char c[][num])
 {
     for(int i=0;c[i][0]!='\0';++i)   
         printf("%s\n",c[i]);      //c[i] MEANS STRING AT Ith INDEX, C[2] = "XYZ"
 }

 int main(void)
 {
     char c[][10]={"hello","world","xyz"};
     num = sizeof(c[0]);              //NO. OS SEPARATE STRINGS POSSIBLE
     fun(c);
     return 0;
 }

ВЫХОД:

hello
world
xyz

В функции fun, когда мыскажем c[i], тогда мы получаем доступ к string , присутствующему в i th index, пример c[1] в приведенном выше примере равен world - теперь, если вы хотите сравнить элементы двух массивовмассивы, то вы можете получить доступ к каждому строковому индексу по индексу и использовать strcmp, например:

strcmp(subArr[j],arr[i])

Оба subArr[0] и arr[0] одинаковы, то есть cream в вопросе, следовательно, когда мы используем strcmp вернет 0 , указывая, что оба subArr[0] и arr[0] одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...