Wie werden Sie ein beliebiges Zeichen, String oder Wert einer Variablen ohne Bibliotheksfunktionen in C drucken?

StackOverflow https://stackoverflow.com/questions/468262

Frage

Wenn ich zum Beispiel keine Standard-Library-Funktionen wie printf verwenden sollte, dann putchar wie kann ich einen Charakter auf den Bildschirm leicht zu drucken. Gibt es eine einfache Möglichkeit, es zu tun. Ich weiß nicht viel über Systemaufrufe und wenn ich sie nutzen, dann wie?

So kann jemand Rat eine einfache Möglichkeit des Druckens ohne Bibliotheksfunktionen mit ??

War es hilfreich?

Lösung 3

Nun thank u alle für ur answers.I fand eine einfache Antwort durch einen Kommentar von Herrn Hao unter der Frage. seine Antwort ist einfach Programm wie dieses

Turbo C (DOS-Programm):

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

oder versuchen, diese: http://en.wikipedia.org/wiki/Brainfuck :) - // Hao (eine Stunde vor)

Ich versuchte es auf Turbo C und seine Arbeiten. Ich wollte eine einfache Lösung wie diese, und ich wollte es als richtige Antwort akzeptieren, aber er (Hao) gab es wie ein Kommentar so klebte ich es hier für andere Benutzer darüber im Namen von ihm kennen und akzeptiert. Sobald danken wieder u Mr.Hao.

Andere Tipps

In Standard-C, können Sie nicht. Die einzigen I / O in C definiert ist durch die C-Standardbibliothek Funktionen.

Auf einer Plattform kann es Möglichkeiten, es zu tun:

  • Make-Kernel direkt aufruft. Sie werden wahrscheinlich einige Inline-Assembler, dies zu tun schreiben müssen. Sie könnten litb des write Anruf direkt, ohne Ihre C-Bibliothek machen. Besorgen Sie sich die Quelle Ihrer C-Bibliothek zu sehen, wie es gemacht wird.
  • Schreiben Sie direkt an den Rahmenpuffer. Multi-User-OS oft dies nicht zulassen (zumindest ohne Bibliothek / kernel Anrufe).

Wenn Sie Ihre eigene C-Bibliothek schreiben, ich bin nicht sicher, warum Sie dies tun wollen würde.

Unter Linux können Sie den write System-Aufruf verwenden:

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

Wenn Sie nicht genug davon bekommen können, können Sie eine Stufe tiefer gehen, die syscall Aufruf allgemein:

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

Es lohnt sich über strace zu wissen, was Sie, welche syscalls werden verwendet, um ein bestimmtes Programm verwenden können, um zu sehen, während er läuft. Aber beachten Sie, dass für „einige einfache Parser“, ist es kaum nötig roh Systemaufrufe zu verwenden. Bessere Nutzung der Funktionen der C-Bibliothek.

Übrigens, Suche nach Writefile und GetStdHandle Funktionen, wenn Sie die oben in Windows ohne Verwendung der C-Standardbibliothek tun wollen. Wird allerdings nicht so l33t wie der Linux-Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top