Как Вы распечатаете какой-либо charcater, строку или значение переменной без библиотечных функций в C?

Вы получаете это исключение, потому что ваша переменная selectedFile никогда не заполняется.

Вам необходимо заполнить переменную selectedFile После отобразить диалоговое окно и позволить пользователю выбрать файл XML:

selectConfigFile.ShowDialog();
var selectedFile = selectConfigFile.SafeFileName;
XDocument configFile = XDocument.Load(selectedFile);
8
задан Community 21 May 2017 в 09:10
поделиться

3 ответа

Хорошо благодарите u все за Ваши ответы. Я нашел один простой ответ комментарием от г-на Hao ниже вопроса. его ответ является простой программой как это

Turbo C (DOS-программа):

char far* src = (char far*) 0xB8000000L; 
*src = 'M'; 
src += 2; 
*src = 'D'; 

или попробуйте это: http://en.wikipedia.org/wiki/Brainfuck :) –//Hao (час назад)

Я попробовал его на Turbo C и его работе. Я хотел простое решение как это, и я хотел принять его как корректный ответ, но он (Hao) дал его как комментарий, таким образом, я вставил его здесь, чтобы другие пользователи знали об этом от имени его и приняли его. Еще раз благодарите u г-на Hao.

4
ответ дан 5 December 2019 в 06:39
поделиться

В стандарте C, Вы не можете. Единственный ввод-вывод, определенный в C, через стандартные библиотечные функции C.

На данной платформе могут быть способы сделать это:

  • Сделайте вызовы ядра непосредственно. Необходимо будет, вероятно, записать некоторый встроенный ассемблерный код, чтобы сделать это. Вы могли сделать litb's write звоните непосредственно, не пользуясь Вашей библиотекой C. Захватите источник своей библиотеки C, чтобы видеть, как это сделано.
  • Запишите непосредственно в кадровый буфер. Многопользовательская ОС часто запрещает это (по крайней мере, не делая библиотеки/вызовов ядра).

Если Вы не пишете свою собственную библиотеку C, я не уверен, почему Вы хотели бы сделать это.

15
ответ дан 5 December 2019 в 06:39
поделиться

В Linux можно использовать write системный вызов:

write(1, "hello\n", 6); // write hello\n to stdout

Если Вы не можете получить достаточно его, можно сделать один шаг ниже, вызвав syscall в общем:

syscall(__NR_write, 1, "hello\n", 6);

Об этом стоит знать strace, который можно использовать для наблюдения, какие syscalls используются какой-то конкретной программой, в то время как она работает. Но обратите внимание, что для "некоторого простого синтаксического анализатора", едва необходимо использовать необработанные системные вызовы. Лучше используйте функции c библиотеки.

Между прочим, наблюдение за WriteFile и GetStdHandle функционирует, если Вы хотите сделать вышеупомянутое в Windows, не пользуясь c стандартной библиотекой. Не будет как l33t как решение Linux все же.

6
ответ дан 5 December 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: