Путь в графике на C

Я некоторое время использовал Graphics.h в своей программе. Я столкнулся с проблемой на пути, но позже решил ее. Теперь я ввел неправильный путь в функции initigraph(), но программа все еще работала. Как это возможно?

Код1:

#include <graphics.h>
#include <stdio.h>
#include <conio.h>

int main()
{
    char a[] ="vyfm";
    int gd = DETECT, gm;
    initgraph(&gd, &gm, a);

    line(100,100, 200, 200);

    getch();
    closegraph();

    return 0;
}

Код 2:

#include <graphics.h>
#include <stdio.h>
#include <conio.h>

int main()
{
    char a[] ="C:\\TC\\BGI";
    int gd = DETECT, gm;
    initgraph(&gd, &gm, a);

    line(100,100, 200, 200);

    getch();
    closegraph();

    return 0;
}

person Community    schedule 17.11.2018    source источник
comment
Боже мой!!! Это ДРЕВНИЙ API Turbo C. Язык C++ (не говоря уже о вычислениях в целом) сильно изменился с тех пор... Что касается вашего вопроса: initgraph() инициализирует графическую систему и загружает некоторые файлы времени выполнения из каталога BG (Borland Graphics). Я предполагаю, что вашему exe просто не нужны какие-либо из этих файлов времени выполнения;)   -  person paulsm4    schedule 17.11.2018
comment
Я использую кодовые блоки   -  person    schedule 17.11.2018
comment
Но как возможно, чтобы функция initgraph не требовала никакого каталога?   -  person    schedule 17.11.2018
comment
@KeshavSaraf C:\\TC\\BGI явно Turbo C, ... BGI работает только под MS-DOS, поэтому, если у вас действительно есть CodeBlocks, какую ОС BGI вы получили или на которую ориентируетесь? Это может ответить на ваш вопрос, поскольку разные версии BGI могут по-разному обрабатывать параметры. IIRC WinBGI имеет другой заголовок, поэтому у вас есть что-то еще ... graphics.h бессмысленно, так как почти все движки gfx имеют такой файл ... ваш код явно древний BGI   -  person Spektre    schedule 17.11.2018
comment
Вы задали аналогичный вопрос здесь. ПЕДАЛЬНЫЙ И ПРИЧИННЫЙ ФАКТ: даже если ваша программа делает что-то не так... вы НЕ (обязательно) получите ошибку компиляции, и она НЕ МОЖЕТ даже выйти из строя во время выполнения ( по крайней мере не сначала). Может показаться, что это работает. Это ХУДШЕЕ виды ошибок — те, которые ваш клиент находит до того, как вы это сделаете :( Всегда остерегайтесь неопределенного поведения.   -  person paulsm4    schedule 18.11.2018


Ответы (1)


Если вы говорите, что используете кодовые блоки, будьте осторожны при компиляции кода, а затем запускайте его. Если вы просто используете команду «запустить» в кодовых блоках, она просто запустит ваш последний exe-файл, даже если ваш текущий файл будет изменен. exe будет изменен, когда вы успешно скомпилируете свой код. В этом случае ваш код должен скомпилироваться, но я думаю, что вы пропустили этот шаг.

person RpdStrike    schedule 17.11.2018
comment
Я всегда использую вариант сборки и запуска. - person ; 17.11.2018