Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[C] Pasar un string dividido con strtok a int

Estas en el tema de [C] Pasar un string dividido con strtok a int en el foro de C/C++ en Foros del Web. Explico el contexto: Tengo un RUT que se compone en su conjunto de un número de 8 carácteres, un guión, y un dígito verificador. Ej: ...
  #1 (permalink)  
Antiguo 21/08/2012, 17:55
 
Fecha de Ingreso: mayo-2011
Mensajes: 26
Antigüedad: 13 años
Puntos: 1
[C] Pasar un string dividido con strtok a int

Explico el contexto: Tengo un RUT que se compone en su conjunto de un número de 8 carácteres, un guión, y un dígito verificador. Ej: 15554302-6.

Lo que yo estoy buscando es poder convertir el número de 8 carácteres a entero, lo cual me va a poder servir luego para hacer comparaciones. Para ello estuve googleando y lo que pensaba era poder usar la función strtok, para poder obtener esa división del string y convertirla a int usando la función atoi.

El código de lo que intento hacer, a continuación:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main ()
  6. {
  7.   char str[] ="15554302-6";
  8.   char * pch;
  9.   int number;
  10.   printf ("Quiero dividir \"%s\" ese rut en partes:\n",str);
  11.   pch = strtok (str," ,.-");
  12.   number = (atoi)pch;
  13.   while (pch != NULL)
  14.   {
  15.     printf ("%s\n",pch);
  16.     pch = strtok (NULL, " ,.-");
  17.   }
  18.   prinnf("El número es %d", number);
  19.   return 0;
  20. }

Sin embargo, al compilarla con gcc me sale un warning y un error.

Código C:
Ver original
  1. h724@ubuntu:~$ gcc -o example1 example1.c
  2. example1.c: In function ‘main’:
  3. example1.c:12: warning: assignment makes integer from pointer without a cast
  4. example1.c:12: error: expected ‘;’ before ‘pch’
  5. h724@ubuntu:~$

No śe que és lo que está mal, por eso lo vengo a preguntar.

Saludos.
  #2 (permalink)  
Antiguo 21/08/2012, 18:47
Avatar de Doommarine_Maxi  
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: [C] Pasar un string dividido con strtok a int

Si no me equivoco creo que se usa

Código C++:
Ver original
  1. atoi(variable);

y tu estas usando:
Código C++:
Ver original
  1. (atoi)variable;

Ya que atoi es una función, esta recibe un parámetro y te devuelve un valor numérico.
  #3 (permalink)  
Antiguo 21/08/2012, 21:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 26
Antigüedad: 13 años
Puntos: 1
Respuesta: [C] Pasar un string dividido con strtok a int

Cita:
Iniciado por Doommarine_Maxi Ver Mensaje
Si no me equivoco creo que se usa

Código C++:
Ver original
  1. atoi(variable);

y tu estas usando:
Código C++:
Ver original
  1. (atoi)variable;

Ya que atoi es una función, esta recibe un parámetro y te devuelve un valor numérico.
Tienes razón, no me dí cuenta xD

(Tengo otro mini-programa aquí a mano donde el atoi está justo como tú lo mencionas).

Gracias =D, aunque en todo caso esto lo voy a probar de nuevo mañana en caso de cualquier otra duda, ya que por primera vez uso la función que strtok.

Saludos!
  #4 (permalink)  
Antiguo 23/08/2012, 08:09
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: [C] Pasar un string dividido con strtok a int

Quizá tambien te interese usar la version reentrante strtok_r (segura para multiples procesos) y cambiar atoi por strtol para un mejor control de errores

vosk

Etiquetas: int, string, strtok, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:01.