Pasar NULL a printf en C

Considere el siguiente fragmento de código C.

char* p = NULL;
printf("%s", p);

¿Cuál debería ser la salida del programa anterior?
La impresión espera una array de caracteres terminada en ‘\ 0’ (o literal de string) mientras que recibe un puntero nulo. Pasar NULL a printf es un comportamiento indefinido.

De acuerdo con la Sección 7.1.4 (de C99 o C11): uso de funciones de biblioteca

Si un argumento de una función tiene un valor no válido (como un valor fuera del dominio de la función, o un puntero fuera del espacio de direcciones del programa, o un puntero nulo, o un puntero a almacenamiento no modificable cuando el parámetro correspondiente no está calificado const) o un tipo (después de la promoción) no esperado por una función con un número variable de argumentos, el comportamiento no está definido.

Algunos compiladores pueden producir un valor nulo mientras que otros fallan en la segmentación. Impresiones GCC (nula).

// Effect of passing null pointers to ( %s ) 
// printf in C
#include <stdio.h>
  
int main()
{
   char* p = NULL;
   printf( "%s", p);
   return 0;
}

Salida en GCC:

(null)

Tenga en cuenta que el programa anterior puede causar un comportamiento indefinido según el estándar C.

Este artículo es una contribución de Aditya Chatterjee . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *