КАК написать программу, которая сканирует строку строк с помощью указателей - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь написать программу, которая просит пользователя ввести пару имен (в данном случае 3, проверьте мое определение), программа с функциями scan_names и print_names будет сканировать имена и напечатайте их, что бы я ни делал, мне это не удастся: (

Это исключение, которое я получаю: «Исключение, выданное в 0x0FD6FB7C (ucrtbased.dll) в Magshimim_EX175.exe: 0xC0000005: расположение чтения нарушения доступа 0x00616161.»

#include <stdio.h>

#define LINE 3
#define LENGH 10

void print_names(char* names[LENGH], int line)
{
    printf("\nYour names are:\n");
    for (size_t i = 0; i < line; i++) {
        puts(names[i]);
    }
}

void scan_names(char* names[LENGH], int line)
{
    for (int i = 0; i < line; i++) {
        printf("\nEnter name %d:  ", i + 1);
        fgets(names[i],LENGH,stdin);
    }
}

int main(void)
{
    char names[LINE][LENGH] = { NULL };
    scan_names(names, LINE);
    print_names(names, LINE);
}

1 Ответ

2 голосов
/ 09 мая 2019

char names[LINE][LENGH] - это двумерный массив символов. char* names[LENGH] - это одномерный массив указателей символов. Как ваш компилятор сообщает вам, если вы не читаете предупреждения / ошибки: типы несовместимы.

Измените функции на void print_names(char names[LINE][LENGH], int line).

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