Separa char para usar en otra variable

Iniciado por veravluis, 19 Marzo 2017, 00:18 AM

0 Miembros y 1 Visitante están viendo este tema.

veravluis

// Estoy separando la variable (char) nombreEdad y funciona bien
// El resultado por pantalla es :
// Luis
// 20
// Me gustaría saber como podría poner el nombre Luis en una variable char diferente, y el numero 20 en una variable de tipo int, espero me entiendan y puedan ayudar gracias.

Código (cpp) [Seleccionar]

char nombreEdad[] = "Luis 20";
char* a;

a = strtok(nombre, " ");
while(a != NULL) {


cout << a << endl;
a = strtok(NULL, " ");

}

MAFUS

Si sabes que la cadena a separar siempre tiene el mismo formato puedes usar sscanf.

veravluis

Cita de: MAFUS en 19 Marzo 2017, 00:23 AM
Si sabes que la cadena a separar siempre tiene el mismo formato puedes usar sscanf.

Citar
No entiendo lo que me quieres decir.
scanf ó cin son para pedir datos a los usuarios pero yo no necesito pedirselos ya que ya los tengo solo deseo separarlos y luego usarlos en variables diferentes.

MAFUS

Deberías conocer la biblioteca estándar. Así verías que muchas de las cosas ya están hechas.

sscanf: http://c.conclase.net/librerias/?ansifun=sscanf

veravluis

Cita de: MAFUS en 19 Marzo 2017, 00:44 AM
Deberías conocer la biblioteca estándar. Así verías que muchas de las cosas ya están hechas.

sscanf: http://c.conclase.net/librerias/?ansifun=sscanf

Citar
Si puedes hacer un ejemplo con lo que yo publique te lo agradecería

MAFUS

Un ejemplo con tus datos:

#include <stdio.h>

int main() {
char nombreEdad[] = "Luis 20";
    char nombre[20];
    int edad;
   
    sscanf(nombreEdad, "%s %i", nombre, &edad);
   
    printf("Nombre: %s\n", nombre);
    printf("Edad: %i\n", edad);
}

veravluis

#6
Cita de: MAFUS en 19 Marzo 2017, 02:12 AM
Un ejemplo con tus datos:

#include <stdio.h>

int main() {
char nombreEdad[] = "Luis 20";
   char nombre[20];
   int edad;
   
   sscanf(nombreEdad, "%s %i", nombre, &edad);
   
   printf("Nombre: %s\n", nombre);
   printf("Edad: %i\n", edad);
}


Gracias por su ayuda me sirvió de mucho, pero se me presento otro problema no puedo leer numeros con 10 digitos, me lee perfecto hasta 9 numeros pero con 10 me sale un numero diferente al que leo, como podría solucionar esto ? gracias

Código (cpp) [Seleccionar]

char datos[] = "1 2304872458";

int code;
unsigned long code1;

sscanf(datos, "%i %i", &code, &code1);

printf("%i ",code);
printf("%i ",code1);


//Solución %u, Gracias por la ayuda.

engel lex

cuando lees en el sscanf usas %i indicando que deseas leer un int...  debes usar %li para leer un long int
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.