Почему эта программа РАБОТАЕТ? - C (СИ)

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

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

У меня есть две структуры, с одинаковым кол-вом полей, но поля разного типа:
Листинг программы
  1. struct hat
  2. {
  3. char s1[20], s2[20], s3[20] ;
  4. } shapka;
  5. typedef struct monopolies
  6. {
  7. char name[40];
  8. int year;
  9. float capital;
  10. }monopolies;
  11. monopolies monopoly; //создаю тут структуру типа monopolies
Есть функция для обработки "шапки": ( если что, это считывание шапки таблицы из файла, но это не важно)
Листинг программы
  1. void Read_Shapka_File(FILE *f, struct hat *shapka) //как вы видите, отдаю в ф-ию указатель на структуру типа hat
  2. {
  3. if (fscanf(f, "%s%s%s", shapka->s1, shapka->s2, shapka->s3)!=EOF)
  4. {
  5. printf("%-20s %15s %20s\n\n", shapka->s1, shapka->s2, shapka->s3);
  6. }
  7. else
  8. {
  9. exit(ERROR_READING_FILE);
  10. }
  11. }
...И совершенно другая, отдельная ф-ия, в которую я отдаю указатель на вторую структуру.
Листинг программы
  1. void Job1_Two_Files(char* putInp, monopolies *monopoly)
В этой ф-ии я вызываю ф-ию Read_Shapka_File, но отдаю ей указатель на другую структуру, не ту, что положено:
Листинг программы
  1. Read_Shapka_File(inp, monopoly);
. Мало того что компилятор не ругается, но программа работает и выводит-таки эту "шапку". КАК??? Если это из-за указателей в обеих ф-иях, это не объясняет, почему нет конфликта типов. Скидываю программу, постарался удалить все, что не относится к данной проблеме

Решение задачи: «Почему эта программа РАБОТАЕТ?»

textual
Листинг программы
  1.     if (inp=fopen(putInp, "r")==NULL)

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

  1. Программа открывает файл с помощью функции fopen.
  2. Файл открывается в режиме чтения (r).
  3. Если файл не может быть открыт (в случае ошибки), программа выдает сообщение об ошибке и завершает выполнение.

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


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

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

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы