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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No me funcionan correctamente las cadenas de formato
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: No me funcionan correctamente las cadenas de formato  (Leído 4,381 veces)
lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
No me funcionan correctamente las cadenas de formato
« en: 28 Mayo 2013, 22:52 pm »

Hola a todos , como me estaba quebrando la cabeza con este asunto , hice un programa de prueba. Se donde esta el fallo pero no como solucionarlo. La linea en cuestion es scanf("%s__%s" , &str1 , &str2); Se supone que si yo pongo qqq__zzz , deberia guardar qqq en str1 y zzz en str2. La cuestion es que me lo guarda todo en str1 y me deja vacio str2. Es decir , yo esperaba
str1 = qqq
str2 = zzz
pero el programa da
str1 = "qqq__zzz"
str2 = ""
Me estoy quebrando la cabeza y no se como puedo solucionar esto , aunque se que el error esta en la cadena de formato.
Muchas gracias por su ayuda :)


En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #1 en: 28 Mayo 2013, 23:22 pm »

Código
  1. scanf("%s__%s" , str1 , str2);
Prueba así a ver...


En línea

- Pásate por mi web -
https://codeisc.com
lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #2 en: 28 Mayo 2013, 23:38 pm »

Código
  1. scanf("%s__%s" , str1 , str2);
Prueba así a ver...
Gracias por la respuesta , aunque en el mejor de los casos el compilador pone los ampersand y en el peor da error. En mi caso compila pero sigue igual que antes. Aun asi eso no se debe hacer , scanf recibe direcciones de memoria de las variables donde guarda los datos , no las propias variables ...
En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #3 en: 28 Mayo 2013, 23:50 pm »

Cuanto ocupa la cadena? Debe tener al menos 4 espacios para guardar qqq (recuerda que es necesario un caracter nulo para indicar el final).
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
CCross

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #4 en: 29 Mayo 2013, 00:03 am »

De esta forma te deberia funciónar

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

Saludos
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #5 en: 29 Mayo 2013, 00:27 am »

De esta forma te deberia funciónar

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

Saludos
Los & del scanf sobran. Y aun asi no te compilara porque has puesto dos comillas en un mismo argumento.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
CCross

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #6 en: 29 Mayo 2013, 00:36 am »

Los & del scanf sobran. Y aun asi no te compilara porque has puesto dos comillas en un mismo argumento.
Lo acabo de compilar y ejecutar funcióna a la perfección no entiendo por que lo dices  :huh:

Saludos
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #7 en: 29 Mayo 2013, 01:39 am »

La linea en cuestion es scanf("%s__%s" , &str1 , &str2); Se supone que si yo pongo qqq__zzz , deberia guardar qqq en str1 y zzz en str2. La cuestion es que me lo guarda todo en str1 y me deja vacio str2.
Ese es el comportamiento normal de scanf con el especificador de formato "%s": leer una palabra (secuencia de caracteres delimitada por espacio blanco).

Para leer dos secuencias cuyo separador es "__" debes utilizar, por poner un ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define NUM_CHARS  80
  5.  
  6. int main(void)
  7. {
  8.   char a[NUM_CHARS];
  9.   char b[NUM_CHARS];
  10.  
  11.   printf("Palabras separadas por \"__\": ");
  12.   fflush(stdout);
  13.   if (scanf(" %[^_]__%[^_\n]", a, b) == 2){
  14.      printf("a: %s\n", a);
  15.      printf("b: %s\n", b);
  16.   }
  17.  
  18.   return EXIT_SUCCESS;
  19. }

----

Código
  1. scanf("%s__%s" , str1 , str2);
Prueba así a ver...
Gracias por la respuesta , aunque en el mejor de los casos el compilador pone los ampersand y en el peor da error. En mi caso compila pero sigue igual que antes. Aun asi eso no se debe hacer , scanf recibe direcciones de memoria de las variables donde guarda los datos , no las propias variables ...
Si str1 y str2 son los nombres de dos arrays de caracteres no es necesario utilizar el operador "dirección de" en la llamada a scanf.

----

De esta forma te deberia funciónar

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    char cad[5], cad1[5];
  6.  
  7.    scanf("%s" "%s", &cad, &cad1);
  8.    printf("%s__%s", cad, cad1);
  9.  
  10.    return 0;
  11. }
Los & del scanf sobran. Y aun asi no te compilara porque has puesto dos comillas en un mismo argumento.
El uso de dos cadenas literales seguidas:
Código
  1. scanf("%s" "%s", &cad, &cad1);
No es un error ya que se concatenan resultando en una sola. Esa llamada a funcion es equivalente a:
Código
  1. scanf("%s%s", &cad, &cad1);

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
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #8 en: 29 Mayo 2013, 01:42 am »

No es un error ya que se concatenan resultando en una sola. Esa llamada a funcion es equivalente a:
Código
  1. scanf("%s%s", &cad, &cad1);
Tomo nota, es una delicia aprender cosas nuevas  :rolleyes:

Lo acabo de compilar y ejecutar funcióna a la perfección no entiendo por que lo dices  :huh:
¿Pero en los & tenía razón?  :silbar:
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
CCross

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: No me funcionan correctamente las cadenas de formato
« Respuesta #9 en: 29 Mayo 2013, 02:12 am »

¿Pero en los & tenía razón?  :silbar:

Si los & son redundantes ya que el nombre del array es un puntero inicializado con la dirección
del primer elemento del array de caracteres.

Saludos amchacon  ::)
« Última modificación: 29 Mayo 2013, 02:15 am por CCross » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines