elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como hacer una lectura de una palabra caracter a caracter???
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: como hacer una lectura de una palabra caracter a caracter???  (Leído 13,327 veces)
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #10 en: 3 Noviembre 2012, 21:29 pm »

xiruko, no havia pensado en eso pero creo que se refiere a meter un string como "hola" y k le diga h o l a sin variables.


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #11 en: 3 Noviembre 2012, 21:36 pm »

Citar
xiruko, no havia pensado en eso pero creo que se refiere a meter un string como "hola" y k le diga h o l a sin variables.

perdona lo habia entendido mal xD

en ese caso, no se si sera trampa pero se puede hacer asi:

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char** argv) {
  4.  
  5. if (argc != 2) {
  6. printf("MODO DE USO: %s <palabra>\n", argv[0]);
  7. return 0;
  8. }
  9.  
  10. for (; *argv[1]; argv[1]++) printf("%c\n", *argv[1]);
  11.  
  12. return 0;
  13. }

y la salida:

Código:
xiruko:~$ gcc prueba.c -o prueba
xiruko:~$ ./prueba
MODO DE USO: ./prueba <palabra>
xiruko:~$ ./prueba coche233
c
o
c
h
e
2
3
3
xiruko:~$

si no se puede asi entonces ni idea xD esperare a que alguien mas postee a ver si sabe la solucion.

un saludo!


En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #12 en: 3 Noviembre 2012, 21:42 pm »

jajaj esa esta buena me habia olvidado de esa
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #13 en: 3 Noviembre 2012, 21:53 pm »

bien pensado xiruko, haber k dice el k pregunta pero desde mi punto de vista aun es una variable, solo que declarada desde otro sitio.
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #14 en: 3 Noviembre 2012, 21:56 pm »

Citar
haber k dice el k pregunta pero desde mi punto de vista aun es una variable

ya.. por eso dije lo de que no se si es trampa xD si no es asi entonces ni idea, pero me gustaria saber como hacerlo.
En línea

asdavid

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #15 en: 4 Noviembre 2012, 13:45 pm »

xiruko,si, es asi,pero no se si podras explicarme o comentarme un poco el programa,te lo agradeceria porque soy muy nevo en esto jej
por ejemplo,por que declaras argc y argv dentro d elos parentesis del main??
y el char** para que sirve??
gracias y todos y perdonen por mi ignorancia jej
un saludo!
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #16 en: 4 Noviembre 2012, 16:27 pm »

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char** argv) {
  4.  
  5. if (argc != 2) {
  6. printf("MODO DE USO: %s <palabra>\n", argv[0]);
  7. return 0;
  8. }
  9.  
  10. for (; *argv[1]; argv[1]++) printf("%c\n", *argv[1]);
  11.  
  12. return 0;
  13. }

por que declaras argc y argv dentro d elos parentesis del main??
es la manera para poder pasarle argumentos al programa. antes de explicartelo mejor leete la teoria y luego pregunta en el caso de que tengas una duda concreta, sino realmente no entenderas porque se hace asi. si no te importa leer en ingles, puedes leerte este enlace que es bastante corto. si prefieres en español, buscalo en google que deben haber miles de webs que lo expliquen.

contando con que te has leido ese enlace o algun otro que explique lo mismo, argc es un entero que indica el numero de argumentos totales, siendo el minimo 1 que es el propio programa. en este caso, se llama al programa asi:
Código:
./programa coche255
por lo que habran 2 argumentos: "./programa" y "coche255". de ahi el if del principio del programa, que verifica si solo hay 2 argumentos y en el caso de que no sea asi, indica la manera de usar el programa y se cierra.

y el char** para que sirve??
argv es un puntero a un array de punteros a caracter. este representa los parametros pasados al programa. por ejemplo, en el caso de este programa:
Código:
./programa coche255
argv[0] sera "./programa" y argv[1] sera "coche255". si esto de los punteros no lo entiendes te recomendaria que buscaras de nuevo en google ya que hay tambien miles de webs que hablan sobre ello, y ahi te lo explicaran mucho mejor que yo aqui. si despues de leerlo tienes alguna duda entonces preguntalo aqui y te ayudaremos sin ningun problema.

luego lo que uso en el for es aritmetica de punteros. argv[1] es un puntero a una cadena, asi que la condicion del for es que haya algo en esa posicion de la cadena (que no sea NULL), luego el incremento es sumarle 1 al puntero de la cadena, y dentro tan solo se imprime el caracter en esa posicion de la cadena.

espero que te sirva de ayuda, un saludo!
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #17 en: 4 Noviembre 2012, 21:09 pm »

¡Buenas!

Lee el input hasta que de introduce EOF (ctrl+Z en windows)
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    while(!feof(stdin))
  6.        putchar(getchar());
  7.    return 0;
  8. }
  9.  

Y otra alternativa que lee solo una linea:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    while(ungetc(getchar(),stdin) != EOF && ungetc(getchar(),stdin) != '\n')
  6.        putchar(getchar());
  7.    return 0;
  8. }
  9.  

¡Saludos!
« Última modificación: 5 Noviembre 2012, 00:09 am por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #18 en: 5 Noviembre 2012, 01:49 am »

Y otra alternativa que lee solo una linea:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    while(ungetc(getchar(),stdin) != EOF && ungetc(getchar(),stdin) != '\n')
  6.        putchar(getchar());
  7.    return 0;
  8. }
Si bien funciona correctamente y se ahorra la declaración de una variable se debe pagar un precio elevado: cuatro llamadas a función por cada iteracion del bucle.

Otra opción es utilizar el mínimo de llamadas, si quieres retornar el ultimo carácter leído (en el caso de ser '\n') lo haces después del bucle:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int ch;
  7.  
  8.   while ((ch = getchar()) != EOF && ch != '\n')
  9.      putchar(ch);
  10.   if (ch == '\n')
  11.      ungetc('\n', stdin);
  12.  
  13.   return EXIT_SUCCESS;
  14. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: como hacer una lectura de una palabra caracter a caracter???
« Respuesta #19 en: 5 Noviembre 2012, 09:00 am »

Si bien funciona correctamente y se ahorra la declaración de una variable se debe pagar un precio elevado: cuatro llamadas a función por cada iteracion del bucle.

¿¿¿El objetivo no era no declarar ninguna variable???
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Help! Programa para sustituir un carácter en C
Programación C/C++
sora_ori 9 17,252 Último mensaje 7 Febrero 2013, 16:50 pm
por rir3760
Indicar al Batch que el caracter no se usara como modificador
Scripting
Btcsk 2 5,258 Último mensaje 27 Mayo 2013, 20:24 pm
por Btcsk
AYUDA leer carácter a carácter un fichero y guardarlo en una matriz C++
Programación C/C++
slavinyo 0 3,902 Último mensaje 8 Junio 2013, 18:25 pm
por slavinyo
Ayuda - Leer Caracter por Caracter
Scripting
SpesMod 3 5,097 Último mensaje 3 Febrero 2014, 07:03 am
por Eleкtro
Como imprimir una cadena de caracteres, caracter por caracter
ASM
Cachee38 1 4,997 Último mensaje 31 Octubre 2017, 13:34 pm
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines