[C con Clase] consulta sys_nerr
Miguel Ángel Ordóñez
maormo en gmail.com
Mar Feb 24 20:49:27 CET 2015
Muy buenas.
Retomando el aprendizaje de c y c++, estoy con un ejercicio tonto que es
mostar una lista con todos los códigos de error.
#include <stdlib.h> /* para exit */
#include <stdio.h>
int main()
{
int i;;
for (i=0; i< sys_nerr; i++)
printf ("%d: %s\n", i, sys_errlist[i]);
exit(0);
}
la compilación me devuelve los avisos:
`sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
`sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
Y la ejecución muestra hasta el error 134 (para este valor ya devuelve NULL)
Así que he modificado el programa para usar strerror de esta forma (no se
si es muy elegante...) :
#include <stdio.h>
#include <string.h>
int main()
{
int errnum = 0;
int resultado;
char *desconocido = "Unknown error";
char cadena[256] = " ";
strncpy(cadena, strerror(errnum),13);
// tenía definida la variable cadena cono char *cadena, pero
// me daba un error SIGSEGV, Segmentation fault porque strncopy no
comprueba si copia una cadena más grande en una más pequeña
while ((resultado = strcmp(cadena,desconocido)) != 0)
{
printf( "%d: %s\n", errnum, strerror( errnum ) );
errnum++;
strncpy(cadena, strerror(errnum),13);
}
return 0;
}
Como el error nº 41 no está definido, ahí finaliza el programa.
La pregunta que os quería hacer, ¿hay alguna alternativa a la variable
sys_nerr?
Un saludo y muchas gracias.
Miguel Ángel.
--
usuario registrado de GNU/Linux nº 416197
http://counter.li.org.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20150224/44d132d5/attachment.html>
Más información sobre la lista de distribución Cconclase