Установка 2D символьного массива равным другому 2D символьному массиву - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь задать указанную строку c в массиве двумерных символов, равную другой строке в массиве двумерных символов, чтобы я мог удалить строку из моего первого массива, введя в нее пустую строку. Есть ли способ сделать , если (deleteCourse [0] == courseName [i]) работает в моем коде?

char courseName[18][25];
char deleteName[1][25];
char empty[1][25] = {NULL};

printf("Enter your course name: ");
scanf(" %[^\n]s", &courseName[9]); // assume I input a course at row 9

printf("Enter your course name to delete: "); // typing the same name as courseName[9]
scanf(" %[^\n]s", &deleteCourse[0]); 

for(int i = 0; i < 18; i++)
{
    if(deleteCourse[0] == courseName[i]) // scanning for the same string name
    {
        strncpy(courseName[i], empty[0], 25); // using NULL, empty[0], to empty the string, courseName[i]
    }
}

1 Ответ

1 голос
/ 20 апреля 2020

Для сравнения строки вы можете использовать strcpm функцию

int strcmp(const char *s1, const char *s2);

Например, в вашем случае вы можете использовать, как показано ниже:

if(strcmp(deleteName[0],courseName[i]) == 0) {
    // Do something
}

но я видел, что что-то проблема в вашем коде:

scanf(" %[^\n]s", &courseName[9]);

Если вы хотите ввести строку в качестве ввода в строке 9, вы не должны использовать &:

scanf(" %[^\n]s", courseName[9]);

Это похоже на deleteCourse

scanf(" %[^\n]s", deleteCourse[0]);

OT, когда вы определяете пустую строку:

char empty[1][25] = {NULL};

это не точно, это означает, что вы назначаете всем символам = NULL, но NULL используется для указателя , Если вы хотите пустую строку, вы можете объявить:

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