Заполнение массива структур - 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);

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

В данном коде происходит следующее:

  1. plain - это массив структур, в котором каждая структура содержит поля name и age.
  2. malloc(size) используется для выделения памяти под строку, которая будет хранить имя.
  3. scanf(%s%*c, plain[i].name) используется для считывания имени в выделенную память plain[i].name.
    • plain[i].name - это поле структуры, которое будет хранить имя.
    • %s - это спецификатор формата, который указывает, что следующий ввод должен быть строкой.
    • %*c - это спецификатор формата, который считывает символ, но игнорирует его значение. Это используется для считывания символа новой строки, оставшегося во входных данных от предыдущего вызова scanf.

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


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

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

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