Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: piyor6 en 14 Abril 2018, 19:59 PM

Título: ayuda con las cadenas
Publicado por: piyor6 en 14 Abril 2018, 19:59 PM
buenos dias tardes o noches amigos tengo un problema con un ejercicio en c++ tengo que determinar en un vector una cantidad de personas y preguntarle si es discapacitada o no(f/v) hasta hay todo facil pero la duda mia es como hago para pasar la persona discapacitada si el ususario ingreso v
como copio una cadena en otra con la libreria string.h (el profesor no deja hacerlo con string.h)

ESTE SERIA EL CODIGO CON LA LIBRERIA PERO NECESITO SIN ESA LIBRERIA AYUDAAAA   

Y si algun programador me puede dar su whatsApp para preguntarle dudas direnctamente, muchas gracias


#include <stdlib.h>
#include <stdio.h>
#include<string.h>
//estructura
struct persona{
char nombre[20];
char discapacidad='v';
}personas[30],personaconD[30],personasinD[30];

int numpe,j=0,k=0;
void llenar_personas();
void imprimir();



int main(){
llenar_personas();
imprimir();
    return 0;
}

//llenar las personas
void llenar_personas(){
printf("ingrese el numero de personas: ");
scanf("%d",&numpe);
for(int i=0;i<numpe;i++){
fflush(stdin);
printf("-------------------------------\n");
printf("PERSONA #%d\n",i+1);
printf("nombre: ");
fgets(personas.nombre,30,stdin);
printf("discapacidad(f/v): ");
scanf("%s",&personas.discapacidad);
fflush(stdin);

//sacando personas discapacitadas (AQUI ESTA MI DUDA)
if(personas.discapacidad=='v'){
    strcpy(personaconD[j].nombre,personas.nombre);
    j++;
}
//sacando personas sin discapacidad(Y AQUI)
if(personas.discapacidad=='f'){
    strcpy(personasinD.nombre,personas.nombre);
    k++;
}
}
}
//imprimir las peronas
void imprimir(){
printf("-------------------------------\n");
printf("PERSONAS CON DISCAPACIDAD\n");
for(int i=0;i<numpe;i++){
    printf("%s",personaconD.nombre);
}
printf("-------------------------------\n");
printf("PERSONAS SIN DISCAPACIDAD\n");
for(int i=0;i<numpe;i++){
    printf("%s",personasinD.nombre);
}

printf("-------------------------------\n");
}
Título: Re: ayuda con las cadenas
Publicado por: Kenji-chan en 14 Abril 2018, 20:30 PM
con la función
int sprintf(char *str, const char *format, ...)
de la biblioteca <stdio.h>
puedes copiar un string con formato a un char*
Título: Re: ayuda con las cadenas
Publicado por: MAFUS en 14 Abril 2018, 21:58 PM
Hazte tu propia strcpy
char* strcpy(char *destino, const char* origen) {
    register unsigned long long i = 0;
    register char c;
   
    for(i=0; (c=origen[i]) != '\0'; ++i)
        destino[i] = c;
       
    destino[i] = '\0';
   
    return destino;
}


Como la original, ésta no tiene protección contra desbordamiento de buffer.
Título: Re: ayuda con las cadenas
Publicado por: piyor6 en 14 Abril 2018, 23:29 PM
no puedo usar funciones en el codigo osea si puedo crear mis propias funciones pero no puedo usar librerias para llamar mas funciones ayudame a escribir el codigo de una funcion que se llame copiar y que copie una cadena a otra vacia
al aso como
copiar(char destino,char origen,int num);
muchas gracias
Título: Re: ayuda con las cadenas
Publicado por: Kenji-chan en 15 Abril 2018, 00:24 AM
la función que te a propuesto MAFUS es una función creada por el, lo único que tiene el nombre de una función ya conocida, pero si pones esa función en tu código y quitas el include de <string.h> te funcionara conmo quieres, pero como ya dijo el
Citarésta no tiene protección contra desbordamiento de buffer
eso tendras que arreglarlo
Título: Re: ayuda con las cadenas
Publicado por: piyor6 en 15 Abril 2018, 02:16 AM



ok, copie todo el codigo y tambien hice la estructura de la funcion y borre el string.h y asi estoy usando la funcion que cree y me tira error


for(int i=0;i<numpe;i++){
//sacando personas discapacitadas
if(personas[i].discapacidad=='v'){
  strcpy(personaconD[i],numpe,personas[i].nombre);
}
   
}
PDT:subiria una imagen del error pero no se subir imagenes
Título: Re: ayuda con las cadenas
Publicado por: Yuki en 15 Abril 2018, 02:30 AM
Cita de: piyor6 en 15 Abril 2018, 02:16 AM


ok, copie todo el codigo y tambien hice la estructura de la funcion y borre el string.h y asi estoy usando la funcion que cree y me tira error


for(int i=0;i<numpe;i++){
//sacando personas discapacitadas
if(personas[i].discapacidad=='v'){
  strcpy(personaconD[i],numpe,personas[i].nombre);
}
   
}
PDT:subiria una imagen del error pero no se subir imagenes

Estableces 3 argumentos a strcpy.
Título: Re: ayuda con las cadenas
Publicado por: piyor6 en 15 Abril 2018, 03:00 AM
podrias ser mas claro sobre que tengo que hacer para que funcione
Título: Re: ayuda con las cadenas
Publicado por: Kenji-chan en 15 Abril 2018, 03:22 AM
cuando llamas a la funcion le pasas 3 parametros cundo esta solo admite 2
strcpy(personaconD,numpe,personas.nombre);
el numpe esta de mas