Как проверить, есть ли элемент в матрице? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь проверить в моей матрице измерения [10] [10], какие места доступны для хранения данных (String) и какие заняты.

Код в основном проходит всю матрицу и проверяет каждую точку.

Я пытался использовать strlen и != NULL, но все просто печатает, что место свободно.

char parque[10][10];

for(int i = 0; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
        parque[i][j] = "";
    }
}

parque[5][5]="f47ac10b-58cb-4372-a567-0e02b2c3d499,ANR";

for(int i = 0; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
        if(parque[i][j] != "") {
            printf("The Spot [%d][%d] is taken",i,j);
        } else {
            printf("The Spot [%d][%d] is free",i,j);
        }
    }
}

В основном место [5] [5] должно напечатать, что оно занято, по крайней мере, это то, что я хочу, чтобы он делал ...

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Ваша декларация

char parque[10][10];

объявляет двумерный массив char. Если вы скомпилируете свой код со строгим компилятором, вы получите ошибку:

error: assignment makes integer from pointer without a cast [-Wint-conversion]
             parque[i][j] = "";
                          ^

То, что вы имели в виду, это сделать массив указателей на const char, как здесь:

const char* parque[10][10];

Тогда ваша программа скажет, что The Spot [5][5] is taken.

0 голосов
/ 18 января 2019

Вы не можете использовать !=. Вам нужно использовать strcmp. И, конечно же, вам нужно инициализировать содержимое массива перед тем, как выполнить его итерацию и использовать его значения для сравнения со строкой "".

Это условие:

if(parque[i][j] != "")

станет:

if (strcmp(parque[i][j], ""))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...