Заполнение массива структур - C (СИ)
Формулировка задачи:
При заполнении структуры в цикле все указатели (с 0 - 4 елемент ) в массиве структур принимают значение последнего ввода сканф .
#include<stdio.h> #include<time.h> #define size 40 typedef struct { char *name; char *type; int numb; }type; type plain[5]; int main() { srand(time(NULL)); char tmp[size]; for (int i = 0; i < 5; i++) { printf("Enter name :"); scanf("%s%*c", tmp); plain[i].name = tmp; printf("Enter type :"); scanf("%s%*c", tmp); plain[i].type = tmp; plain[i].numb = rand() % 20; printf("number : %d\n", plain[i].numb); } for (int i = 0; i < 5; i++) { printf("name : %s\n", plain[i].name); printf("type %s\n " , plain[i].type); printf("nambers : %d\n", plain[i].numb); } system("pause"); return 0; }
Решение задачи: «Заполнение массива структур»
textual
Листинг программы
plain[i].name = malloc(size); scanf("%s%*c", plain[i].name);
Объяснение кода листинга программы
В данном коде происходит следующее:
plain
- это массив структур, в котором каждая структура содержит поляname
иage
.malloc(size)
используется для выделения памяти под строку, которая будет хранить имя.scanf(
%s%*c, plain[i].name)
используется для считывания имени в выделенную памятьplain[i].name
.plain[i].name
- это поле структуры, которое будет хранить имя.%s
- это спецификатор формата, который указывает, что следующий ввод должен быть строкой.%*c
- это спецификатор формата, который считывает символ, но игнорирует его значение. Это используется для считывания символа новой строки, оставшегося во входных данных от предыдущего вызоваscanf
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д