#c #text #binaryfiles #uefi
Вопрос:
У меня есть приведенный ниже код. Двоичный файл efi и new.txt размещается в том же месте. Но похоже, что fopen не улавливает текстовый файл, расположенный в том же каталоге. В чем может быть причина?
#include lt;stdio.hgt; #include lt;string.hgt; #include lt;sys/stat.hgt; #include lt;string.hgt; int main(int argc, char** argv) { FILE* filePointer; const char* filename = "new.txt"; int wordExist = 0; const int bufferLength = 255; char search[100]; char line[bufferLength]; filePointer = fopen(filename, "r"); if (filePointer != NULL) { printf("correct method n "); } else { printf("not correct n"); } for (int i = 0; i lt; 7; i ) { printf("%d n", i); } return 0; }
Вывод, который я получаю : неверно 0 1 2 3 4 5 6
Результат, который я ожидаю: Правильный метод 0 1 2 3 4 5 6
Комментарии:
1. Неясно, как этот код связан с UEFI. Не могли бы вы, пожалуйста, показать точный ожидаемый результат по сравнению с фактическим результатом?
2. вывод в настоящее время: неверно 0 1 2 3 4 5 6 , что я ожидаю : правильный метод 0 1 2 3 4 5 6
3. Я просто проверяю, выбирает ли fopen текстовый файл или нет, но он не выбирает при запуске в оболочке UEFI.
4. Я бы доверился
fopen
. Рабочий каталог может быть не таким, как вы думаете. Если в системе posix, то позвонитеgetcwd
, чтобы подтвердить текущий рабочий каталог.5. Это не интерфейсы UEFI — какую платформу вы используете для создания кода?
Ответ №1:
Я предполагаю, что вы используете edk2 с edk2-libc.
Обязательно добавьте «DevShell» в раздел «[Библиотечные классы]» в файле applications .inf.
Если вы пытаетесь запустить программу без оболочки UEFI, функция fopen завершится ошибкой.