Foro de elhacker.net

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
Código
  1. char* strcpy(char *destino, const char* origen) {
  2.    register unsigned long long i = 0;
  3.    register char c;
  4.  
  5.    for(i=0; (c=origen[i]) != '\0'; ++i)
  6.        destino[i] = c;
  7.  
  8.    destino[i] = '\0';
  9.  
  10.    return destino;
  11. }

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

Código
  1. for(int i=0;i<numpe;i++){
  2. //sacando personas discapacitadas
  3. if(personas[i].discapacidad=='v'){
  4.  strcpy(personaconD[i],numpe,personas[i].nombre);
  5. }
  6.  
   
}
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


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

Código
  1. for(int i=0;i<numpe;i++){
  2. //sacando personas discapacitadas
  3. if(personas[i].discapacidad=='v'){
  4.  strcpy(personaconD[i],numpe,personas[i].nombre);
  5. }
  6.  
   
}
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