C/Visual C - warning con atoi que bloquea mi programa

 
Vista:

warning con atoi que bloquea mi programa

Publicado por Rubén (5 intervenciones) el 10/08/2003 18:42:44
el Warning es el siguiente:
"passing arg1of atoi makes pointer from integer without a cast"
esto en la siguiente linea:
prova= atoi(NIF[i]);

prova es un integer, y NIF es una cadena de 9 caracteres
cuando hago debug con DevC++4 me dice:
Program received signal SIGSEGV, Segmentation fault

No se si m esta pidiendo que tiene que ser un puntero o algo asi.. ayuda por favor. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:warning con atoi que bloquea mi programa

Publicado por chuidiang (677 intervenciones) el 11/08/2003 10:34:49
atoi() necesita de parámetro un char *
NIF es un char *
NIF[i] es un caracter, por eso protesta y luego además te da el Segmentation fault. Si el caracter es, por ejemplo, la 'A', su codigo ascii es 65, que está interpretando como la dirección de memoria 65, que no es tuya y da el Segmentation Fault.

Si quieres obtener las cifras del NIF, basta que al codigo ascii le restes el codigo ascii del '0' (cero). Es decir

prova = (int)(NIF[i]) - (int)('0');

Esto funcionara siempre que en NIF[i] tegas una cifra en 0 y 9. No te funcionará con la letra final del NIF ni con los ".", si es que has puesto puntos en el NIF:

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar