• Jueves 14 de Noviembre de 2024, 17:16

Autor Tema:  arreglo de char  (Leído 2686 veces)

kingsizen

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
arreglo de char
« en: Viernes 3 de Abril de 2009, 23:21 »
0
Hola, soy nuevo en C y quisiera que me ayuden a resolver un simple problema...
estoy tratando de cargar en un arreglo de caracteres un simple nombre y luego que me muestre la palabra que ingrese. miren el codigo:

#include <stdio.h>


main ()
{
     char nombre[10];
     int j,i;
     
     printf ("Ingrese Nombre");
     while (nombre == '');
     {
           ++i;
           scanf ("%c",&nombre);
           }
     
     
     for (j=0;j<=i;++j)
     printf ("%c",nombre[j]);
}


Mis dudas son:
* Porque no anda?
* Es correcto el fin de datos que estoy utilizando en el while? ('')
* Noté que algunos usan #define cantidad 10. para que sirve esto? y cual es la diferencia a como lo hice yo?

espero que me puedan ayudar, espero sus respuestas. muchas gracias!

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: arreglo de char
« Respuesta #1 en: Sábado 4 de Abril de 2009, 01:55 »
0
Bueno muchas cosas...

1)
Código: C
  1. scanf ("%c",&nombre[i]);
  2.  
, acá tu estás capturando caracter a caracter no una palabra entera...para esto hay muchas formas

Código: C
  1. scanf ("%s",nombre);
  2. gets(nombre);
  3.  

2) Aparte de que estas capturando caracter a caracter hay varios errores grandes en el while

a) La variable i no esta inicializada por lo que puedes iniciar a capturar valores en cualquier pocision del vector o incluso en cualquier parte de la memoria

b) La condicion del while es en si misma es ilogica ya que como estas capturando caracter a caracter, jamas llegaras al final de la cadena por lo que estas en un bucle infinito

3) Y ya que el bucle while esta mal, en caso de que el compilador lograra llegar al bucle for, este arrojaria igualmente errores por lo comentado anteriormente, básicamente por la variable i

El codigo que necesitas seria el siguiente

Código: C
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.  char nombre[10];
  5.  int j,i;
  6.  
  7.  scanf("%s",nombre);
  8.  printf("%s",nombre);
  9.  return 0;
  10. }
  11.  

Y para completar tus cuestiones, el uso de #define esta ligado al uso de constantes o macros. Su uso no es obligatorio aunque normalmente hace mas facil la lectura de un codigo

Saludos

kingsizen

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: arreglo de char
« Respuesta #2 en: Sábado 4 de Abril de 2009, 03:49 »
0
bueno aqui con todo lo recopilado he llegado a este codigo que funciona correctamente
#include <stdio.h>


main ()
{
     char nombre[10];
     int c,j,i;
     i=0;
     printf ("Ingrese Nombren");
     scanf("%c",&nombre);
     while (nombre != '*')
     {
           ++i;
           scanf ("%c",&nombre);
           }
     
     
     for (j=0;j<=i;++j)
     
     printf ("%cn",nombre[j]);
}
la unica duda que me quedo es que yo para cargar el arreglo de char uso scanf ("%c",&nombre) y vos usas scanf ("%s",&nombre) cual es la diferencia???

Muchas Gracias por la respuesta! y en cualquier momento vuelvo con otra!

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: arreglo de char
« Respuesta #3 en: Sábado 4 de Abril de 2009, 06:23 »
0
Si corres el programa que yo coloqué notarás claramente las diferencias....tu tienes que capturar letra a letra....es decir,si quiero capturar la palabra Carlos, tendré que hacer

C enter
a enter
r enter
l enter
o enter
s enter
....y para terminar la captura..... * enter

En mi codigo escribes Carlos enter y listo!!!....ahora bien, date cuenta que yo capturo la cadena asi

Código: C
  1. scanf("%s",nombre);
  2.  

lo cual es equivalente a decir
Código: C
  1. scanf("%s",&nombre[0]);
  2.  
....con %c manipulas caracteres, con %s cadenas

Si tienes mas dudas con gusto te las resuelvo

Saludos

kingsizen

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: arreglo de char
« Respuesta #4 en: Sábado 4 de Abril de 2009, 07:40 »
0
muchas gracias betopin, acabo de entender lo que me decias, osea que usando "%s" directamente puedo ingresar una palabra en un arreglo sin tener ke cargarlo  mediante for, while. etc etc...
pero entonces... la forma en la que yo tenia pensada usar es totalmente obsoleta, ahora sabiendo esto nunca mas voy a usar esa forma para ingresar caracteres? o recomendas que no olvide del todo la forma "%c"?

muchsisimas gracias!

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: arreglo de char
« Respuesta #5 en: Sábado 4 de Abril de 2009, 17:02 »
0
Considero que si vas a manipular cadenas, tu metodo no es el indicado, pero no por eso debes olvidarte del uso de caracteres, no sabes cuando podrás necesitarlos. Quiero aclararte que la respuesta que te di es solo una de muchas que puedes obtener para manipular cadenas.

Saludos

kingsizen

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: arreglo de char
« Respuesta #6 en: Sábado 4 de Abril de 2009, 18:52 »
0
Muchisimas Gracias  :D