¿Cómo puedo mostrar un valor de cadena sin usar las bibliotecas estándar en lenguaje C?

¿Cómo puedo mostrar un valor de cadena sin usar las bibliotecas estándar en lenguaje C? Por favor vea el siguiente código:

//without using the standard libraries that other created it int main() { string str = "Hello"; //How do I can display str value without using the standard libraries that other created it? } 

Así es como puedes hacerlo:

 // Declare the prototype for the write() function, // with unspecified parameters because why not. extern long write(); int main(void) { char const *str = "Hello"; // Retrieve the length unsigned long size = 0; while(str[size]) ++size; // Write to stdout (fd 1) write(1, str, size); return 0; } 

Vive en Coliru .

Por supuesto, es tan no portátil como es posible, y probablemente no podrá vincular o desencadenar UB en la mayoría de los sistemas que no sean de los que obtuve la statement (es una llamada al sistema Linux, declarada en unistd.h que unistd.h . desde coliru). Pero entonces, es por eso que tenemos la biblioteca estándar en primer lugar.

Sencillamente, no puede, al menos no si desea que su código sea portátil.

Es casi seguro que hay alguna forma de realizar una salida en código C sin usar la biblioteca estándar. Pero la forma de hacerlo variará ampliamente de un sistema a otro. Una solución que funciona en sistemas UNIX, por ejemplo, casi con seguridad no funcionará en Windows, y viceversa, a menos que esa solución utilice la biblioteca estándar de C, que se personaliza para cada sistema.

Es por eso que existe la biblioteca estándar. Y en las implementaciones independientes (incrustadas) que no admiten la biblioteca estándar, debe escribir código específico del sistema para realizar cualquier E / S.

Si desea saber cómo hacer E / S en un sistema en particular sin usar la biblioteca estándar, le sugiero que publique una nueva pregunta.

 int main() { string str = "Hello"; } 

int main() está mejor escrito como int main(void) .

No hay una string tipo en C. Lo que probablemente quieras aquí es cualquiera

 const char *str = "Hello"; 

o

 char str[] = "Hello"; 

Una “cadena” en C es, por definición, “una secuencia contigua de caracteres terminada por e incluyendo el primer carácter nulo”. Es un formato de datos, no un tipo de datos. (C ++ tiene un tipo std::string , pero está preguntando acerca de C, no de C ++, y en C ++ std::string está definido por la biblioteca estándar de C ++).

El comp.lang.c FAQ es un excelente recurso.