Wie werden Sie Charcater, String oder Wert einer Variablen ohne Bibliotheksfunktionen in C ausgeben?

7

Wenn ich zum Beispiel keine Standard-Bibliotheksfunktionen wie printf, putchar verwenden soll, dann kann ich einfach ein Zeichen auf den Bildschirm drucken. Gibt es einen einfachen Weg, es zu tun? Ich weiß nicht viel über Systemaufrufe und wenn ich sie dann verwenden muss, wie?

Kann also jeder eine einfache Druckmöglichkeit ohne Bibliotheksfunktionen empfehlen?

    
Manoj Doubts 22.01.2009, 06:59
quelle

3 Antworten

3

Vielen Dank für Ihre Antworten. Ich fand eine einfache Antwort durch einen Kommentar von Herrn Hao unter der Frage. Seine Antwort ist ein einfaches Programm wie dieses

Turbo C (DOS-Programm):

%Vor%

oder probier das: Ссылка :) - // Hao (vor einer Stunde)

Ich habe es auf Turbo C versucht und es funktioniert. Ich wollte eine einfache Lösung wie diese und ich wollte es als richtige Antwort akzeptieren, aber er (Hao) gab es als Kommentar, also habe ich es hier für andere Benutzer eingefügt, um dies im Namen von ihm zu wissen und akzeptierte es. Nochmals vielen Dank, Mr.Hao.

    
Manoj Doubts 22.01.2009, 09:26
quelle
15

In Standard C können Sie nicht. Der einzige in C definierte I / O ist über die C-Standardbibliotheksfunktionen.

Auf einer gegebenen Plattform gibt es möglicherweise Möglichkeiten, dies zu tun:

  • Machen Sie Kernel-Aufrufe direkt. Sie müssen dazu wahrscheinlich eine Inline-Assembly schreiben. Sie könnten den write -Aufruf von littb direkt machen, ohne Ihre C-Bibliothek zu verwenden. Besorgen Sie sich die Quelle Ihrer C-Bibliothek, um zu sehen, wie es gemacht wird.
  • Schreiben Sie direkt in den Framebuffer. Bei Mehrbenutzer-Betriebssystemen ist dies häufig nicht zulässig (zumindest ohne Aufrufe der Bibliothek / des Kernels).

Wenn Sie nicht gerade Ihre eigene C-Bibliothek schreiben, bin ich mir nicht sicher, warum Sie das tun wollen.

    
derobert 22.01.2009 07:15
quelle
6

In Linux können Sie den Systemaufruf write verwenden:

%Vor%

Wenn Sie nicht genug davon bekommen können, können Sie einen Schritt weiter gehen und den syscall generisch aufrufen:

%Vor%

Wissenswertes zu strace , mit dem Sie sehen können, welche Syscalls von einem bestimmten Programm verwendet werden, während es ausgeführt wird. Beachten Sie jedoch, dass für "einige einfache Parser" kaum rohe Systemaufrufe benötigt werden. Besser die Funktionen der c-Bibliothek nutzen.

Suchen Sie übrigens nach WriteFile- und GetStdHandle-Funktionen, wenn Sie die obigen Schritte in Windows ausführen möchten, ohne die c-Standardbibliothek zu verwenden. Wird nicht so wie die Linux-Lösung sein.

    
Johannes Schaub - litb 22.01.2009 07:05
quelle

Tags und Links