Указатели. Программа, которая считывает число входных строк. - 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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с памятью и вводом-выводом
- Объявление переменных: МЕГАМАССИВ ИЗ СТРОК, счетчик строк и их количества n и k, а также переменных i и k
- Считывание количества строк с помощью функции scanf
- Выделение памяти под МЕГАМАССИВ с помощью функции malloc
- Чтение строк и запись их в массив с помощью функции scanf
- Вывод содержимого массива на экран с помощью функции printf
- Освобождение памяти с помощью команды free
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д