Заполнение структуры через функцию - 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);
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с памятью и строками.
- Объявление структуры
locс полямиnameиgr. - Функция
readingпринимает указатель на структуруlocи заполняет поля этой структуры. - В функции
readingиспользуется функцияmemsetдля обнуления поляname. - В функции
readingиспользуется функцияstrncpyдля копирования строкиHelloв полеname. - В функции
mainсоздается экземпляр структурыlocс именемl. - Функция
readingвызывается для заполнения структурыl. - Выводится значение поля
nameструктурыl.