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

No puedo introducir valores a cadena de texto

Estas en el tema de No puedo introducir valores a cadena de texto en el foro de C/C++ en Foros del Web. Hola, perdón por subir algo tan idiota, pero estoy empezando con las cadenas de texto, quiero introducirle un valor y no puedo, mejor veanlo: #include ...
  #1 (permalink)  
Antiguo 26/01/2013, 19:43
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 11 meses
Puntos: 0
No puedo introducir valores a cadena de texto

Hola, perdón por subir algo tan idiota, pero estoy empezando con las cadenas de texto, quiero introducirle un valor y no puedo, mejor veanlo:

#include <stdio.h>


Código C:
Ver original
  1. int main()
  2.      {
  3.      char nombre[20];
  4.  
  5.      printf( "Introduzca su nombre (20 letras máximo): " );
  6.      scanf( "%s", nombre );
  7.      printf( "\nEl nombre que ha escrito es: %s\n", nombre );
  8.      getchar();
  9.      return 0;
  10.      }

Ponerle el & a nombre dentro de scanf no cambió nada, se supone que en una cadena de texto no es necesario cierto?
  #2 (permalink)  
Antiguo 26/01/2013, 22:10
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 13 años
Puntos: 94
Respuesta: No puedo introducir valores a cadena de texto

mmm q raro eso deberia andar sin problemas; agrega el header stdio.h por las dudas


Cita:
Ponerle el & a nombre dentro de scanf no cambió nada, se supone que en una cadena de texto no es necesario cierto?
exacto, no es necesario


Saludos
  #3 (permalink)  
Antiguo 27/01/2013, 07:50
 
Fecha de Ingreso: enero-2013
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Hola,

haz una cosa :

antes de hacer el scanf vacía el buffer con la función fflush(stdin) e incluyendo la librería <stdlib.h>

En caso que te siga diciendo que no puedes, en vez de hacer un scanf, utiliza la función gets(variable) , que sirve tambien para cadenas con espacios vacíos, pero es otra manera de leer...

Prueba a ver que tal!
  #4 (permalink)  
Antiguo 27/01/2013, 11:52
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Muchas gracias!!, al final me sirvió solo el gets, las otras cosas ya las había probado, no se igual porque sucede esto, tendrá algo que ver mi compilador?, uso el dev c++
  #5 (permalink)  
Antiguo 27/01/2013, 23:29
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 13 años
Puntos: 94
Respuesta: No puedo introducir valores a cadena de texto

Cita:
tendrá algo que ver mi compilador?, uso el dev c++
puede ser q si, aunq yo tambien uso dev y no tengo problemas. Volve a instalarlo por las dudas

Saludos

PD: el error del scanf solo es con el formato %s o con todos??
  #6 (permalink)  
Antiguo 28/01/2013, 07:50
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por imMarc Ver Mensaje
antes de hacer el scanf vacía el buffer con la función fflush(stdin) e incluyendo la librería <stdlib.h>
Eso no es necesario, de hecho no es recomendable porque puede producir problemas de incompatibilidad en otras plataformas.
  #7 (permalink)  
Antiguo 28/01/2013, 10:54
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por cesar_casla Ver Mensaje
PD: el error del scanf solo es con el formato %s o con todos??
Con todos, la única forma de que funcione fue con gets.

PD: pueden decirme bien como se compran cadenas? (para ver si son iguales)
  #8 (permalink)  
Antiguo 28/01/2013, 11:01
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por juanfranciscoX Ver Mensaje
Con todos, la única forma de que funcione fue con gets.

PD: pueden decirme bien como se compran cadenas? (para ver si son iguales)
Código:
strcmp(Cadena1,Cadena2);
Para ello necesitas incluir la librería estandar:

Código:
#include <string.h>
  #9 (permalink)  
Antiguo 28/01/2013, 13:22
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lima
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: No puedo introducir valores a cadena de texto

LLevo un tiempo usando dev-c++ 4.9 y codeblocks, y puedo decirte que se nota la falta de soporte de varios años que arrastra el dev c++, varios programas que se compilan normalmente en codeblocks presenta problemas en el dev-c++ o producen extraños errores de compilacion, a pesar de eso el dev sigue siendo una buena alternativa
  #10 (permalink)  
Antiguo 28/01/2013, 13:45
 
Fecha de Ingreso: enero-2013
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por amchacon Ver Mensaje
Eso no es necesario, de hecho no es recomendable porque puede producir problemas de incompatibilidad en otras plataformas.
Tienes razón!Supuse que estaría trabajando con DEV-C++ . Buen aporte ;)

Entonces, si necesitas vacíar el buffer de forma genérica como lo haces? Yo sólo conozco fflush(stdin) y fflushnou().

Debes adapartarte a la plataforma no? O hay alguna manera de hacerlo único?
  #11 (permalink)  
Antiguo 28/01/2013, 14:23
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por imMarc Ver Mensaje
Tienes razón!Supuse que estaría trabajando con DEV-C++ . Buen aporte ;)

Entonces, si necesitas vacíar el buffer de forma genérica como lo haces? Yo sólo conozco fflush(stdin) y fflushnou().

Debes adapartarte a la plataforma no? O hay alguna manera de hacerlo único?
No necesitas vaciar el buffer, los nuevos datos sobreescriben a los viejos.

No sé de donde vino esa costumbre, pero al menos yo nunca lo he necesitado (C++).
  #12 (permalink)  
Antiguo 28/01/2013, 14:29
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 13 años
Puntos: 46
Respuesta: No puedo introducir valores a cadena de texto

Buenas, respecto al tema de fflush(stdin) es algo que NUNCA se debe usar, es algo propio de windows, por tanto no es multiplataforma. De hecho la funcion fflush() solo se deberia usar para flujos de salida=> fflush(stdout)

Sobre como remediarlo, bueno aqui llegamos al problema que hay en C cuando se trabaja por consola y es que es algo que se quiere enseñar muy pronto cuando casi no conoces el lenguaje para empezar a hacer programas basicos, pero antes deberías aprender muchas cosas.

De hecho, "no hay necesidad" de limpiar el buffer de entrada si se usan las funciones correctas, es decir si uno usa => fgets() para las cadenas y luego fgets() y sscanf() para los numeros, pero como es algo que puede parecer raro para los principiantes no se enseña y eso es un problema.


Alternativas que hagan lo mismo que el fflush(stdin), pues hay una sencilla que es hacer un bucle, puedes hasta hacer tu propia funcion si quieres:
Código C:
Ver original
  1. void fflushstdin()
  2. {
  3.      int c;
  4.      while((c=getchar()) != '\n' &&  c != EOF);
  5. }

Saludos
  #13 (permalink)  
Antiguo 28/01/2013, 14:51
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por amchacon Ver Mensaje
Código:
strcmp(Cadena1,Cadena2);
Para ello necesitas incluir la librería estandar:

Código:
#include <string.h>
Gracias, me podrías dar un ejemplo que incluya un if?, porque no entiendo bien como funciona cuando se usan condicionales.

Saludos
  #14 (permalink)  
Antiguo 28/01/2013, 15:00
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por juanfranciscoX Ver Mensaje
Gracias, me podrías dar un ejemplo que incluya un if?, porque no entiendo bien como funciona cuando se usan condicionales.

Saludos
Se me olvidaba, si las dos cadenas son iguales te devuelve un cero.

Por lo que:

Código:
if (strcmp(Cadena1,Cadena2) == 0)
    printf("Las dos cadenas son iguales");
  #15 (permalink)  
Antiguo 28/01/2013, 16:32
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 11 meses
Puntos: 35
Respuesta: No puedo introducir valores a cadena de texto

Dev-C++ soporta C y C++, mientras que codeblocks es para C++. Además son entornos de desarrollo, no compiladores.

  #16 (permalink)  
Antiguo 28/01/2013, 16:58
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: No puedo introducir valores a cadena de texto

Cita:
Iniciado por carbon Ver Mensaje
Dev-C++ soporta C y C++, mientras que codeblocks es para C++. Además son entornos de desarrollo, no compiladores.

Codeblocks en realidad soporta un mogollón de lenguajes (Como el Ruby,Python...).

Aunque es verdad que está más especializado en C/C++ (ojo, soporta ambos por igual).
  #17 (permalink)  
Antiguo 28/01/2013, 18:45
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5.  
  6. int main()
  7.      {
  8.      char nombre[20];
  9.      char apellido[20];
  10.      
  11.      printf( "Introduzca su nombre: " );
  12.      gets(nombre);
  13.      printf( "Introduzca su apellido: " );
  14.      gets(apellido);
  15.      system("cls");
  16.      if (strcmp(nombre, apellido) == 0){
  17.     printf("Su nombre y su apellido no pueden ser iguales");
  18. } else {
  19.      printf( "\nBienvenido: %s %s\n", nombre, apellido );
  20.      }
  21.      getchar();
  22.      return 0;
  23.      }

Me tira error, no reconoce el strcmp. Esto ya me había pasado... por eso te pedi un ejemplo.
  #18 (permalink)  
Antiguo 28/01/2013, 19:54
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 11 meses
Puntos: 35
Respuesta: No puedo introducir valores a cadena de texto

Debes incluir el header:

Código C:
Ver original
  1. #include <string.h>
  #19 (permalink)  
Antiguo 28/01/2013, 21:13
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: No puedo introducir valores a cadena de texto

Muchas gracias!! se me pasó.

Etiquetas: cadena, int, introducir
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 20:11.