Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Por que en este otro programa no sale el resultado esperado????

Estas en el tema de Por que en este otro programa no sale el resultado esperado???? en el foro de C/C++ en Foros del Web. hola a todos, en este programa si yo ingreso las dos cadenas: hola hola me debiera salir holahola pero me sale olahola por que???? #include ...
  #1 (permalink)  
Antiguo 03/08/2010, 19:33
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Por que en este otro programa no sale el resultado esperado????

hola a todos, en este programa si yo ingreso las dos cadenas:
hola
hola

me debiera salir

holahola

pero me sale

olahola

por que????

#include <stdio.h>
#include <string.h>


int main ()

{

char *arreglo = "";
char arreglo2 [ 10 ];
char *arreglo22 = "";
char arreglo3 [ 10 ];
char *arreglo33 = "";
int x;
int arreglo222, arreglo333, arreglo444, arreglo555, arreglo666;
arreglo222 = arreglo333 = arreglo444 = arreglo555 = arreglo666 = 0;
char *ptr;



printf ("Escribe una frase: ");
scanf ("%s", arreglo2 );

strcat ( arreglo22, arreglo2 );

printf ("%s\n", arreglo22 );

printf ("Escribe otra frase: ");
scanf ("%s", arreglo3 );

strcat ( arreglo33, arreglo3 );

printf ("%s\n", arreglo33 );





ptr = strstr ( arreglo33, arreglo22 );

if ( ptr != NULL ) {
printf ("Coincidencia\n");
}
else {
printf ("No\n");
}



strcat ( arreglo, arreglo2 );
strcat ( arreglo, " ");

strcat ( arreglo, arreglo3 );
strcat ( arreglo, " ");


printf ("%s\n", arreglo );


return 0;

}
  #2 (permalink)  
Antiguo 03/08/2010, 19:59
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Por que en este otro programa no sale el resultado esperado????

En este ejercicio al igual que en el otro tienes un problema de definiciones. Estas dos definiciones son muy distinta:

char arreglo2 [ 10 ];
char *arreglo22 = "";

En la primera se reserva memoria para el arreblo, pero en la segunda no. Por eso cuando quieres copiar el primero hacia el segundo se prodecen errores.
Te recomendaria, como veo que estas iniciandote, utilizas la primera definicion para aprender como funcionan las cosas. Luego hay mucho mas material que aprender sobre punteros, etc. Pero para un empezar es una buena recomendacion.

PD: trata de poner tus codigos con Highlight es mucho mas vistoso y mejor para los uqe te leemos.
  #3 (permalink)  
Antiguo 03/08/2010, 20:02
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Por que en este otro programa no sale el resultado esperado????

ok gracias para la recomendacion, a que te refieres con hightlight???
  #4 (permalink)  
Antiguo 03/08/2010, 20:07
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Por que en este otro programa no sale el resultado esperado????

a esto:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. int main ()
  6.  
  7. {
  8.  
  9. char *arreglo = "";
  10. char arreglo2 [ 10 ];
  11. char *arreglo22 = "";
  12. char arreglo3 [ 10 ];
  13. char *arreglo33 = "";
  14. int x;
  15. int arreglo222, arreglo333, arreglo444, arreglo555, arreglo666;
  16. arreglo222 = arreglo333 = arreglo444 = arreglo555 = arreglo666 = 0;
  17. char *ptr;
  18.  
  19.  
  20.  
  21. printf ("Escribe una frase: ");
  22. scanf ("%s", arreglo2 );
  23.  
  24. strcat ( arreglo22, arreglo2 );
  25.  
  26. printf ("%s\n", arreglo22 );
  27.  
  28. printf ("Escribe otra frase: ");
  29. scanf ("%s", arreglo3 );
  30.  
  31. strcat ( arreglo33, arreglo3 );
  32.  
  33. printf ("%s\n", arreglo33 );
  34.  
  35.  
  36.  
  37.  
  38.  
  39. ptr = strstr ( arreglo33, arreglo22 );
  40.  
  41. if ( ptr != NULL ) {
  42. printf ("Coincidencia\n");
  43. }
  44. else {
  45. printf ("No\n");
  46. }
  47.  
  48.  
  49.  
  50. strcat ( arreglo, arreglo2 );
  51. strcat ( arreglo, " ");
  52.  
  53. strcat ( arreglo, arreglo3 );
  54. strcat ( arreglo, " ");
  55.  
  56.  
  57. printf ("%s\n", arreglo );
  58.  
  59.  
  60. return 0;
  61.  
  62. }

FIjate que en donde escribis para darle formato, tenes para poner Highlight
  #5 (permalink)  
Antiguo 03/08/2010, 20:14
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Por que en este otro programa no sale el resultado esperado????

ok ya le puse en donde dice hightlight haber si me sale

int instrucciones ( void );
void crear ( void );
void crear2 ( void );
void leer ( void );
void leer2 ( void );
void juntar ( void );
void verfinal ( void );
void crearfinal ( void );

int main ()

{

int seleccion;

seleccion = instrucciones();

printf ("\n");

while ( seleccion != 0 ) {

switch ( seleccion ) {
case 1:
crear();
break;

case 2:
crear2();
break;

case 3:
leer();
break;

case 4:
leer2();
break;

case 5:
juntar();
break;

}

printf ("\n\n");
seleccion = instrucciones();

}
return 0;

}

int instrucciones ( void )

{

int seleccion;

printf ("1-crear 1 archivo secuencial\n2-crear 2 archivo secuencial\n"
"3-leer 1 archivo secuencial\n4-leer 2 archivo secuencial\n5-juntar\n0-fin\n");
scanf ("%d", &seleccion );

return seleccion;

}

void crear ( void )

{

int cuenta;
int saldo;

FILE *ptr;

if (( ptr = fopen ( "credito.dat", "w" ) ) == NULL ) {
printf ("NO");
}
else {

printf ("Escribe la cuenta, 0 para terminar: ");
scanf ("%d", &cuenta );

while ( cuenta != 0 ) {

fprintf ( ptr, "%d\n", cuenta );

printf ("Escribe el saldo: ");
scanf ("%d", &saldo );
fprintf ( ptr, "%d\n", saldo );

printf ("\n");
printf ("Escribe la cuenta, 0 para terminar: ");
scanf ("%d", &cuenta );

}


fclose ( ptr );

}


}

void leer ( void )

{

int cuenta;
int saldo;

FILE *ptr;

if ( ( ptr = fopen ( "credito.dat", "r" ) ) == NULL ) {
printf ("NO");
}
else {

fscanf ( ptr, "%d%d", &cuenta, &saldo );

while ( !feof ( ptr ) ) {
printf ("%d\n%d\n\n", cuenta, saldo );
fscanf ( ptr, "%d%d", &cuenta, &saldo );
}


fclose ( ptr );

}

}

void crear2 ( void )

{

int cuenta;
int saldo;

FILE *ptr;

if (( ptr = fopen ( "credito2.dat", "w" ) ) == NULL ) {
printf ("NO");
}
else {
printf ("Escribe la cuenta, 0 para terminar: ");
scanf ("%d", &cuenta );

while ( cuenta != 0 ) {

fprintf ( ptr, "%d\n", cuenta );

printf ("Escribe el saldo: ");
scanf ("%d", &saldo );
fprintf ( ptr, "%d\n", saldo );

printf ("Escribe la cuenta, 0 para terminar: ");
scanf ("%d", &cuenta );
}


fclose ( ptr );

}

}

void leer2 ( void )

{

int cuenta;
int saldo;

FILE *ptr;

if ( ( ptr = fopen ( "credito2.dat", "r" ) ) == NULL ) {
printf ("NO");
}
else {

fscanf ( ptr, "%d%d", &cuenta, &saldo );

while ( !feof ( ptr ) ) {
printf ("%d\n%d\n\n", cuenta, saldo );
fscanf ( ptr, "%d%d", &cuenta, &saldo );
}


fclose ( ptr );

}

}

void juntar ( void )

{

void funcion ( FILE *ptr );

FILE *ptr;
int cuenta;
int saldo;

if ( ( ptr = fopen ( "credito.dat", "r+" ) ) == NULL ) {
printf ("NO");
}
else {
funcion ( ptr );
fclose ( ptr );
}

}

void funcion ( FILE *ptr )

{

FILE *ptrY;

int cuenta, cuenta2;
int saldo, saldo2;

saldo2 = 100;


if ( ( ptrY = fopen ( "credito2.dat", "r" ) ) == NULL ) {
printf ("NO");
}
else {


fprintf ( ptr, "%d %d\n", cuenta, ( saldo + saldo2 ) );


fclose ( ptrY );

}

}
  #6 (permalink)  
Antiguo 03/08/2010, 20:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Por que en este otro programa no sale el resultado esperado????

ya me salio gracias

Código HTML:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6.  
  7. printf ("hola");
  8.  
  9. return 0;
  10.  
  11. }

Etiquetas: programa, sale, resultados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:44.