Autor
|
Tema: No me funcionan correctamente las cadenas de formato (Leído 4,905 veces)
|
lucaslopez0000
|
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
Mensajes: 499
Error, el teclado no funciona. Pulse F1 para continuar
|
scanf("%s__%s" , str1 , str2);
Prueba así a ver...
|
|
|
En línea
|
|
|
|
lucaslopez0000
|
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
Mensajes: 1.211
|
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
|
|
|
|
CCross
Desconectado
Mensajes: 36
|
De esta forma te deberia funciónar #include <stdio.h> int main() { char cad[5], cad1[5]; scanf("%s" "%s", &cad, &cad1); printf("%s__%s", cad, cad1); return 0; }
Saludos
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
De esta forma te deberia funciónar #include <stdio.h> int main() { char cad[5], cad1[5]; scanf("%s" "%s", &cad, &cad1); printf("%s__%s", cad, cad1); return 0; }
Saludos Los & del scanf sobran. Y aun asi no te compilara porque has puesto dos comillas en un mismo argumento.
|
|
|
En línea
|
|
|
|
CCross
Desconectado
Mensajes: 36
|
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 Saludos
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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: #include <stdio.h> #include <stdlib.h> #define NUM_CHARS 80 int main(void) { char a[NUM_CHARS]; char b[NUM_CHARS]; printf("Palabras separadas por \"__\": "); if (scanf(" %[^_]__%[^_\n]", a , b ) == 2){ } return EXIT_SUCCESS; }
---- 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 #include <stdio.h> int main() { char cad[5], cad1[5]; scanf("%s" "%s", &cad, &cad1); printf("%s__%s", cad, cad1); return 0; }
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: scanf("%s" "%s", &cad , &cad1 );
No es un error ya que se concatenan resultando en una sola. Esa llamada a funcion es equivalente a: 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
Mensajes: 1.211
|
No es un error ya que se concatenan resultando en una sola. Esa llamada a funcion es equivalente a: scanf("%s%s", &cad , &cad1 );
Tomo nota, es una delicia aprender cosas nuevas Lo acabo de compilar y ejecutar funcióna a la perfección no entiendo por que lo dices ¿Pero en los & tenía razón?
|
|
|
En línea
|
|
|
|
CCross
Desconectado
Mensajes: 36
|
¿Pero en los & tenía razón? 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
conversor de formato mp3 a formato acc sin perder la claridad de sonido o otro
Multimedia
|
siryxxx
|
0
|
2,452
|
7 Febrero 2008, 04:21 am
por siryxxx
|
|
|
Programa para quemar peliculas bajadas en formato divx y avi, a formato dvd
Multimedia
|
xoux
|
3
|
5,677
|
28 Abril 2008, 08:37 am
por Aberroncho
|
|
|
Error raro en formato MP4. Ni siquiera puedo cambiarlo de formato.
Multimedia
|
lipman
|
4
|
4,371
|
25 Julio 2008, 14:48 pm
por lipman
|
|
|
¿Como se pasa un video de formato Windows Movie Maker a otro formato?
Multimedia
|
javijack
|
4
|
14,442
|
7 Octubre 2009, 05:53 am
por DanxZ5
|
|
|
paginas incluidas no funcionan correctamente
« 1 2 3 »
PHP
|
gAb1
|
25
|
9,660
|
1 Octubre 2014, 04:04 am
por gAb1
|
|