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

[SOLUCIONADO] Leer char*

Estas en el tema de Leer char* en el foro de C/C++ en Foros del Web. Hola,amigos, estoy intentando en C, leer por ejemplo 1 nombre "Pedro", y almacenarlo en un 'char *', pero suele darme 1 error o lo estoy ...
  #1 (permalink)  
Antiguo 01/01/2014, 17:27
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años
Puntos: 28
Pregunta Leer char*

Hola,amigos, estoy intentando en C, leer por ejemplo 1 nombre "Pedro", y almacenarlo en un 'char *', pero suele darme 1 error o lo estoy haciendo mal, este es el codigo.

Código:
#include<stdio.h>
#include<string.h>

int main ()
{
    char * pepe;
    scanf("%s", &pepe);
    
    printf("%s\n", &pepe);
    
}
saludos
cronos
  #2 (permalink)  
Antiguo 01/01/2014, 17:47
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Leer char*

Cambia char* pepe por char pepe[10] o por la cantidad de caracteres que esperas recibir.
En C++ existe el tipo string que te libera de la necesidad de especificar el largo.
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 01/01/2014, 19:55
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Leer char*

Más adelante podrás ver cómo usar malloc() para almacenar únicamente la memoria que necesites para el nombre (ni mas ni menos)

Aguante C !

  #4 (permalink)  
Antiguo 02/01/2014, 13:19
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años
Puntos: 28
Respuesta: Leer char*

Hola logre hacerlo como dice carbon.

int main ()
{
char * pepe = malloc(100));
scanf("%s", pepe);

printf("%s\n", pepe);

}

gracias por la ayuda.

s2
cronos
  #5 (permalink)  
Antiguo 02/01/2014, 13:57
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Leer char*

Me alegro que te haya servido, pero esa no era mi idea! Ya que estás usando malloc de forma estática, siempre almacenará 100 bytes sin importar el temaño de la cadena leída. La idea de usar malloc() es almacenar la cantidad exacta de bytes para la cadena.

Edito: aquí hice un ejemplo de lo que yo pretendía:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int bytes = 0;
  7.     char current_char;
  8.     char *input = NULL;
  9.  
  10.     printf("Ingrese una cadena: ");
  11.  
  12.     while ((current_char = getchar()) != '\n')
  13.     {
  14.         bytes++;
  15.         input = (char *)realloc(input, bytes);
  16.         input[bytes - 1] = current_char;
  17.     }
  18.  
  19.     printf("Has ingresado '%s'.\n", input);
  20.  
  21.     free(input);
  22.  
  23.     return 0;
  24. }

Como verás solo se almacena la memoria necesaria para la cadena ingresada. Espero que te sirva!


Última edición por carbon; 02/01/2014 a las 17:31

Etiquetas: int, string
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 10:21.