Sábado 14 de Diciembre de 2024, 17:48
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
arreglo de char
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: arreglo de char (Leído 2701 veces)
kingsizen
Miembro activo
Mensajes: 41
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!
Tweet
betopin
Miembro activo
Mensajes: 93
Nacionalidad:
Re: arreglo de char
«
Respuesta #1 en:
Sábado 4 de Abril de 2009, 01:55 »
0
Bueno muchas cosas...
1)
Código: C
scanf
(
"%c"
,&
nombre
[
i
]
)
;
, acá tu estás capturando caracter a caracter no una palabra entera...para esto hay muchas formas
Código: C
scanf
(
"%s"
,
nombre
)
;
gets
(
nombre
)
;
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
#include <stdio.h>
int
main
(
)
{
char
nombre
[
10
]
;
int
j
,
i
;
scanf
(
"%s"
,
nombre
)
;
printf
(
"%s"
,
nombre
)
;
return
0
;
}
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
Programas en C]
kingsizen
Miembro activo
Mensajes: 41
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:
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
scanf
(
"%s"
,
nombre
)
;
lo cual es equivalente a decir
Código: C
scanf
(
"%s"
,&
nombre
[
0
]
)
;
....con %c manipulas caracteres, con %s cadenas
Si tienes mas dudas con gusto te las resuelvo
Saludos
Programas en C]
kingsizen
Miembro activo
Mensajes: 41
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:
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
Programas en C]
kingsizen
Miembro activo
Mensajes: 41
Re: arreglo de char
«
Respuesta #6 en:
Sábado 4 de Abril de 2009, 18:52 »
0
Muchisimas Gracias
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
arreglo de char