Printf sin librerias

Iniciado por Mxt08, 8 Junio 2020, 11:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Mxt08

Hola,
Alguien sabe como hacer un printf o scanf, es decir, una entrada o salida de texto sin usar el stdio.h ni ninguna otra libreria? He probado el write pero no hace nada.
Gracias.

Eternal Idol

Para eso tenes que usar servicios externos si o si (como la API de Windows o la BIOS por ejemplo) o acceder al hardware si escribis tu propio S.O..

Ejemplo elemental:
Código (c++) [Seleccionar]
DWORD written = 0;
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), "HOLA", 4, &written, 0);
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Loretz

Yo creo que no hay manera. "La Consola" no está entre las definiciones del lenguaje, hay flujos de entrada y de salida, pero Consola no. Siempre tendrás que usar alguna librería, del C o del C++.

write está en <unistd.h> para C, o la ostream::write del C++ en <ostream>

No podrás escapar.

EmaTomA

Pense en puts, pero mire mis apuntes y es de la libreria <stdio.h>
puts( "texto" );


Creo que lo que intentas no es posible.
No lo se porque no lo he probado, pero juraria que todas las funciones basicas forman parte de alguna libreria. :rolleyes:


Eternal Idol

La respuesta correcta es la primera.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Loretz

Citar
La respuesta correcta es la primera.
De acuerdo, siempre que no olvides
#include <windows.h>

Eternal Idol

Cita de: Loretz en 12 Julio 2020, 00:51 AMDe acuerdo, siempre que no olvides
#include <windows.h>

Cita de: Loretz en  8 Junio 2020, 15:12 PMSiempre tendrás que usar alguna librería, del C o del C++.

No olvido nada, esa no es una libreria de C/C++ y estrictamente hablando puedo declarar lo necesario manualmente (incluso podria usar syscall o la interrupcion correspondiente y el mismo principio aplica a la BIOS; de ser necesario podria enlazar el resultado de ensamblar un modulo .asm para x64).

Esto es simplemente una tosca demostracion:
Código (c++) [Seleccionar]
typedef unsigned int DWORD;
extern "C" DWORD __stdcall WriteFile(DWORD, void *, DWORD, DWORD *, DWORD);
extern "C" DWORD __stdcall GetStdHandle(DWORD);
#define STD_OUTPUT_HANDLE (DWORD) -11
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón