CADENAS CON SCANF
cuando leo una cadena con scanf cuando llega al primer espacio no mete mas caracteres en la variable.
como se hace?
es q si utilizo el gets el primer scanf q se encuentra se lo salta
AXIAS
como se hace?
es q si utilizo el gets el primer scanf q se encuentra se lo salta
AXIAS
Espero q te contesten muchos porq a mi me pasa lo mismo y necesito ayuda.
con el scanf me lee solo asta el primer espacio en blanco. pero con %^[n] en vez de %s lo soluciono pero luego no se mostrarlo.
Y no me digais de hacerlo con el getchs porq si lo hago con él luego no me reconoce el siguiente scanf.
AYUDA!!!
con el scanf me lee solo asta el primer espacio en blanco. pero con %^[n] en vez de %s lo soluciono pero luego no se mostrarlo.
Y no me digais de hacerlo con el getchs porq si lo hago con él luego no me reconoce el siguiente scanf.
AYUDA!!!
Para poder leer una cadena de carácter desde un scanf se puede hacer esto:
char cadena1[20],cadena2[20],cadena3[20];
.....
printf("Escribe la cadena 1: "); scanf("%s",cadena1);
printf("Escribe la cadena 2: "); scanf("%s",cadena2);
printf("Escribe la cadena 3: "); scanf("%s",cadena3);
y con eso debe jalar, cuando se lee una cadena de carácteres se debe específicar el tamaño de la cadena, y dentro del scanf usar la variable sin el ampersand(&), ya que como se trata de un arreglo de carácter no puede ser almacenado en un solo espacio de memoria, espero darme a entender.
Espero te sirva.
char cadena1[20],cadena2[20],cadena3[20];
.....
printf("Escribe la cadena 1: "); scanf("%s",cadena1);
printf("Escribe la cadena 2: "); scanf("%s",cadena2);
printf("Escribe la cadena 3: "); scanf("%s",cadena3);
y con eso debe jalar, cuando se lee una cadena de carácteres se debe específicar el tamaño de la cadena, y dentro del scanf usar la variable sin el ampersand(&), ya que como se trata de un arreglo de carácter no puede ser almacenado en un solo espacio de memoria, espero darme a entender.
Espero te sirva.
Convendrias que mandes el codigo, para ver exactamente lo que falla.
es muy sencillo, solo tienes que hacer esto para almacenar los datos con espacios en blanco
char *nomb;
Printf("Dame tu nombre completo: ")
scanf(" %^[n]", nomb);
fijate bien en el espacio en blanco antes del simbolo % es muy importante, despues para mostrar los datos solo haces esto
printf("Tu nombre es %s", nomb);
getch();
espero te ayude en algo.
char *nomb;
Printf("Dame tu nombre completo: ")
scanf(" %^[n]", nomb);
fijate bien en el espacio en blanco antes del simbolo % es muy importante, despues para mostrar los datos solo haces esto
printf("Tu nombre es %s", nomb);
getch();
espero te ayude en algo.
conviene usar
cin.getline(str,len)
con
#include <iostream.h>
donde : str es una cadena de char y len es la cantidad maxima de caracteres a recibir (segun la dimension de str, por supuesto).
cin.getline(str,len)
con
#include <iostream.h>
donde : str es una cadena de char y len es la cantidad maxima de caracteres a recibir (segun la dimension de str, por supuesto).
Hola yo he hecho este programa si lo seguis lo pillareis enseguida en los for pongo un numero menos en la condicion porque empieza por 0 :
#include <stdio.h>
#include <conio.h>
void suma();
void resta();
void multiplica();
char opc1;
float cifra[5];
float cifra1[5];
float cifra2[5];
int paso, paso1, paso2;
void main (void)
{
clrscr();
printf("introducir valores de la serie 1 \n");
for(paso1=0;paso1<=4;paso1++)
scanf("%f",&cifra1[paso1]);
for(paso1=0;paso1<=4;paso1++)
printf("%.1f\n",cifra1[paso1]);
getch();
printf("introducir valores de la serie 2 \n");
for(paso2=0;paso2<=4;paso2++)
scanf("%f",&cifra2[paso2]);
for(paso2=0;paso2<=4;paso2++)
printf("%.1f\n",cifra2[paso2]);
getch();
printf("elegir una opcion\n");
printf("1--suma serie 1 y serie 2\n");
printf("2--resta serie 1 y serie 2\n");
printf("3--multiplicacion de serie 1 y serie 2\n");
opc1=getch();
switch(opc1)
{
case \'1\':suma();
break;
case \'2\':resta();
break;
case \'3\':multiplica();
break;
default:
break;
}
}
void suma()
{
paso1=0;
paso2=0;
for(paso=0;paso<=4;paso++)
{
cifra[paso]=cifra1[paso1]+cifra2[paso2];
printf("\n%.1f %.1f %.1f\n",cifra[paso],cifra1[paso1],cifra2[paso2]);
paso1++;
paso2++;
getch();
}
}
void resta()
{
paso1=0;
paso2=0;
for(paso=0;paso<=4;paso++)
{
cifra[paso]=cifra1[paso1]-cifra2[paso2];
printf("\n%.1f %.1f %f.1\n",cifra[paso],cifra1[paso1],cifra2[paso2]);
paso1++;
paso2++;
getch();
}
}
void multiplica()
{
paso1=0;
paso2=0;
for(paso=0;paso<=4;paso++)
{
cifra[paso]=cifra1[paso1]*cifra2[paso2];
printf("%.0f %.0f %.0f",cifra[paso],cifra1[paso1],cifra2[paso2]);
paso1++;
paso2++;
getch();
}
}
#include <stdio.h>
#include <conio.h>
void suma();
void resta();
void multiplica();
char opc1;
float cifra[5];
float cifra1[5];
float cifra2[5];
int paso, paso1, paso2;
void main (void)
{
clrscr();
printf("introducir valores de la serie 1 \n");
for(paso1=0;paso1<=4;paso1++)
scanf("%f",&cifra1[paso1]);
for(paso1=0;paso1<=4;paso1++)
printf("%.1f\n",cifra1[paso1]);
getch();
printf("introducir valores de la serie 2 \n");
for(paso2=0;paso2<=4;paso2++)
scanf("%f",&cifra2[paso2]);
for(paso2=0;paso2<=4;paso2++)
printf("%.1f\n",cifra2[paso2]);
getch();
printf("elegir una opcion\n");
printf("1--suma serie 1 y serie 2\n");
printf("2--resta serie 1 y serie 2\n");
printf("3--multiplicacion de serie 1 y serie 2\n");
opc1=getch();
switch(opc1)
{
case \'1\':suma();
break;
case \'2\':resta();
break;
case \'3\':multiplica();
break;
default:
break;
}
}
void suma()
{
paso1=0;
paso2=0;
for(paso=0;paso<=4;paso++)
{
cifra[paso]=cifra1[paso1]+cifra2[paso2];
printf("\n%.1f %.1f %.1f\n",cifra[paso],cifra1[paso1],cifra2[paso2]);
paso1++;
paso2++;
getch();
}
}
void resta()
{
paso1=0;
paso2=0;
for(paso=0;paso<=4;paso++)
{
cifra[paso]=cifra1[paso1]-cifra2[paso2];
printf("\n%.1f %.1f %f.1\n",cifra[paso],cifra1[paso1],cifra2[paso2]);
paso1++;
paso2++;
getch();
}
}
void multiplica()
{
paso1=0;
paso2=0;
for(paso=0;paso<=4;paso++)
{
cifra[paso]=cifra1[paso1]*cifra2[paso2];
printf("%.0f %.0f %.0f",cifra[paso],cifra1[paso1],cifra2[paso2]);
paso1++;
paso2++;
getch();
}
}
