Указатели. Программа, которая считывает число входных строк. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Дело вот в чем: написал программу, которая считывает число входных строк, а затем и эти самые строки в массив. Подразумевается, что он двумерный, размерность k*n. Сначала читается строка, затем переписывается посимвольно в массив. И что-то оно не работает, не знаю в чем дело. Помогите пожалуйста!)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    int i, j, n, k;
    char s[20];
    char *p;
    
    scanf("%d", &n);
    
    scanf("%s", s);
    k = strlen(s);
    
    p = (char *) calloc(n*k, sizeof(char));
    
    for(j = 0; j < k; j++)
        *((p + j) + k*0) = s[j];
        
    for(i = 1; i < n; i++)  {
        scanf("%s", s);
        for(j = 0; j < k; j++)
            *((p + j) + k*i) = s[j];
    }
    
    for(i = 0; i < n; i++)  {
        for(j = 0; j < k; j++)
            printf("%s", *((p + j) + k*i));
        printf("\n");
    }

    return 0;
}

Решение задачи: «Указатели. Программа, которая считывает число входных строк.»

textual
Листинг программы
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char **MegaArray;     // вот это МЕГАМАССИВ ИЗ СТРОК
    int i, n = 0, k = 20; // n - число сртрок. к - длина каждой строки.
 
    scanf("%d", &n);       // получаем количество строк.
 
    MegaArray = (char **)malloc(n * sizeof(char *)); // создаем в памяти наш МЕГАМАССИВ
 
                          // записываем строчки в массивчик.
    for(i = 0; i < n; i++)
    {
        MegaArray[i] = (char *)malloc(k); // Выделяем память для каждой новой строчки.
        scanf("%s", MegaArray[i]);// читаем новую строчку.
    }
                          // печатаем МЕГАМАССИВ
    for(i = 0; i < n; i++)
        printf("\n %s \n", MegaArray[i]);
 
                          // Корректно память сами освободите ^_^
 
    system("pause");
 
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с памятью и вводом-выводом
  2. Объявление переменных: МЕГАМАССИВ ИЗ СТРОК, счетчик строк и их количества n и k, а также переменных i и k
  3. Считывание количества строк с помощью функции scanf
  4. Выделение памяти под МЕГАМАССИВ с помощью функции malloc
  5. Чтение строк и запись их в массив с помощью функции scanf
  6. Вывод содержимого массива на экран с помощью функции printf
  7. Освобождение памяти с помощью команды free

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы