Ввод и вывод строк в динамическом массиве в отдельных функциях
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <locale.h>
#include <string.h>
void init(int *p, int size)//Функция ввода строк в массив
{
int i;
for(i=0; i<size; i++)
{
gets(p[i]);
if(!*p)break;
}
}
int main()
{
setlocale(LC_ALL, "Rus");
int i;
int size;
int *p = NULL;
p = (char*) malloc(size * sizeof(char));//Выделение памяти
init(p, size);
return 0;
}
Помогите разобраться как правильно сделать ввод и вывод строк вводимых пользователем в динамическом массиве. P.S Начинающий
Ответы (1 шт):
Автор решения: Sergey
→ Ссылка
Как-то так:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <locale.h>
#include <string.h>
#include <errno.h>
//Функция ввода строк в массив
void input_strings(char *p[], ssize_t size)
{
int j;
ssize_t len, n;
for(j=0; j<size; j++) {
p[j] = NULL;
n = 0;
printf("> ");
len = getline(&p[j], &n, stdin);
if (len < 0) {
perror("getline: ");
exit(-1);
}
}
}
//Функция вывода строк из массива
void output_strings(char *p[], ssize_t size) {
int j;
for(j=0; j<size; j++) {
printf("%s", p[j]);
free(p[j]);
}
};
#define ARR_LEN 5
int main(int argc, char *argv[])
{
// В люнихе это не нужно
// setlocale(LC_ALL, "Rus");
int size = ARR_LEN; // Будем работать с пятью строками
char *p[ARR_LEN]; // Указатель на МАССИВ строк
// Вводим строки
input_strings(&p[0], size);
// Выводим введённые строки
printf("\n-----\n");
output_strings(&p[0], size);
printf("-----\n");
return 0;
}