Заполнение структуры через функцию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <string.h>
char ch;
int i,j;
struct loc {
    char *name;
    char gr;
};
void reading (loc);
 
int main() {
    loc l;
    void reading(loc &l);
}
 
void reading (loc &l){
   l.name="Hello";  // выдает deprecated conversion from string constant to 'char*'. а если сделать просто char - проект не запускается invalid conversion from 'const char*' to 'char'
   printf("%s",l.name);
}

Решение задачи: «Заполнение структуры через функцию»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
struct loc {
char name[100];
char gr;
};
 
void reading(loc* l) {
    memset(l->name, 0, sizeof(l->name))
    strncpy(l->name, "Hello", sizeof(l->name)-1);
}
 
int main() {
    loc l;
    reading(&l);
    printf("%s\n", l.name);
}

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

  1. Подключение необходимых библиотек для работы с памятью и строками.
  2. Объявление структуры loc с полями name и gr.
  3. Функция reading принимает указатель на структуру loc и заполняет поля этой структуры.
  4. В функции reading используется функция memset для обнуления поля name.
  5. В функции reading используется функция strncpy для копирования строки Hello в поле name.
  6. В функции main создается экземпляр структуры loc с именем l.
  7. Функция reading вызывается для заполнения структуры l.
  8. Выводится значение поля name структуры l.

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

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