Функция как член структуры - C (СИ) (75338)
Формулировка задачи:
Нужно сделать функцию-член структуры, которая считает значения переменных, входящих в эту структуру. Вот что я имею:
Если имеются идеи или разобраные похожие предметы - поделитесь.
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int main(void)
- {
- struct numbers {
- int x;
- int y;
- int SumNum (struct numbers mystruct) {
- return (mystruct.x+mystruct.y);
- };
- }massnum[5];
- FILE *fp;
- int i;
- //чтение
- if ((fp = fopen("numbers.txt", "rb")) == NULL) {
- printf("Ошибка при открытии файла!");
- return 0;
- }
- for (i = 0; i<5; ++i) {
- if (fread(&massnum[i], sizeof(struct numbers), 1, fp) != 1) {
- if (feof(fp)) break;
- printf("Ошибка при чтении файла!");
- }
- }
- fclose(fp);
- printf("%d", massnum[2].SumNum(massnum));
- return 0;
- }
Решение задачи: «Функция как член структуры»
textual
Листинг программы
- #include <stdio.h>
- struct point {
- int x, y;
- void (*println)(struct point*);
- };
- void println_point(struct point* p){
- printf("[%d, %d]\n", p->x, p->y);
- }
- int main() {
- struct point p1 = { 10, 20, &println_point };
- p1.println(&p1);
- return 0;
- }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций вывода
- Создаем структуру point с полями x и y типа int и указателем на функцию void (println)(struct point)
- Определяем функцию println_point которая принимает указатель на структуру point и выводит значения полей x и y через printf
- Создаем переменную p1 типа struct point с полями равными 10 и 20 и указателем на функцию println_point
- Вызываем функцию println_point передавая в качестве аргумента адрес переменной p1
- Завершаем программу и возвращаем 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д