Я вижу, что некоторые связанные вопросы были заданы, но они либо слишком сложны, чтобы я мог их понять, либо отсутствуют пошаговое руководство от начала до конца (большинство из них заканчивают тем, что рассказывали о своих собственных результатах эксперимента) ). Хорошо, вот эта простая программа:
#include <stdio.h>
#include <string.h>
int main()
{
FILE * f;
char buffer[100];
memset(buffer, 0, 100);
fun();
f = fopen("main.cpp", "r");
fread(buffer, 1, 99, f);
printf(buffer);
fclose(f);
return 0;
}
То, что он делает, в основном печатает сам (предположим, имя файла main.cpp
).
Вопрос
Как я могу напечатать другой файл, скажем foobar.txt
без изменения исходного кода ? Это как-то связано с запуском через VS, пошаговыми функциями и захватом указателя FILE непосредственно перед вызовом fread()
. Не нужно беспокоиться об утечке ресурсов, позвонив по номеру fclose()
.
Я попробовал простой f = fopen("foobar.txt", "r")
, который дал
CXX0017: Error: symbol "fopen" not found
Есть идеи?
Редактировать
Я случайно нашел решение на Отладка Mozilla в Windows FAQ . Правильная команда для немедленного ввода:
f = {,,MSVCR100D}fopen("foo.txt", "r")
Однако, на самом деле он не отвечает на этот вопрос:
- Я до сих пор не понимаю, что здесь происходит.
- Как систематически узнать часть
{,,MSVCR100D}
для любого данного метода? Я знаю, что версия MSVCR меняется от системы к системе. Как я могу это выяснить?
- Может ли кто-нибудь объяснить синтаксис фигурных скобок, особенно, что эти две запятые там делают? Есть ли еще скрытые драгоценные камни, использующие этот синтаксис?