Указатель на строку в структуре - C (СИ)
Формулировка задачи:
Ахой, товарищи.
Имею такой вопрос
дана структура
как возможно простому смертному ее заполнить?) Спасибо
struct naww
{
char *name;
}str[2];Решение задачи: «Указатель на строку в структуре»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
struct naww
{ char *name;
}str[2];
int main()
{ setlocale (LC_CTYPE, "Russian");
char buf[BUFSIZ];
int i;
printf("\nВвод первой строки:\t");
gets (buf);
str[0].name = (char*) malloc (strlen(buf)+1);
strcpy(str[0].name, buf);
printf("\nВвод второй строки:\t");
gets (buf);
str[1].name = (char*) malloc (strlen(buf)+1);
strcpy(str[1].name, buf);
printf("\nЧто получилось:\n");
for (i = 0; i<2; i++)
printf("%3d\t%s\n", i+1, str[i].name);
for (i = 0; i<2; i++)
free (str[i].name);
getchar();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с памятью, строками и консолью.
- Объявление структуры
nawwс одним полем типа char* (указатель на строку). - Объявление массива структур
nawwна 2 элемента. - Установка локали на русскую.
- Выделение памяти под строки, используя функцию malloc.
- Копирование введенных строк в выделенную память с использованием функции strcpy.
- Ввод двух строк с помощью функции gets.
- Вывод полученных строк на экран с помощью цикла for и функции printf.
- Освобождение выделенной памяти с помощью функции free.
- Получение символа для завершения работы программы с помощью функции getchar.
- Возврат 0, чтобы указать, что программа успешно завершилась.