Autor
|
Tema: ayuda con strcpy en kubuntu (Leído 3,000 veces)
|
Rom_Stom
Desconectado
Mensajes: 3
|
Hola a todos, estoy aprendiendo en esto de la programación y realmente me ha costado algo de trabajo, por eso pido su ayuda para saber por que no puedo compilar este código con el cual estaba practicando unos ejercicios que me encontré, este es el código:
#include <stdio.h> #include <stdlib.h> #include <strings.h>
#define PERS 3
void main() { int edades[PERS]; char nombres[PERS][25]; char may_nom[25]; int may=0,i; for(i=0; i<PERS; i++) { printf("Persona %i\n", i+1); printf("Nombre: "); fflush(stdin ); scanf("%c", nombres); printf("Edad:"); scanf("%i", &edades); } for(i=0; i<PERS; i++) { if(edades>= may) { may=edades; strcpy(may_nom, nombres); } } printf("La persona con %s tiene la mayor edad %i", may_nom, may); system("PAUSE"); }
El error que me marca es:
incompatible implicit declaration of built-in function ‘strcpy’ [enabled by default] strcpy(may_nom, nombres);
Gracias por su ayuda de antemano.
|
|
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
El 'warning' ese se produce porque no has incluido 'string.h', sino que has incluido 'strings.h'. Otra cosa, cuando trabajas con los arreglos no accedes a estos con los corchetes. ¿Error al copiar o que simplemente no los has puesto? scanf("%c", nombres ); // Tendría que ser scanf("%c", nombres[i]);
Hay más casos en los que no pones los corchetes.
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
BloodSharp
Desconectado
Mensajes: 814
¡ Hiperfoco !
|
strcpy(may_nom, nombres);
incompatible implicit declaration of built-in function ‘strcpy’ [enabled by default] may_nom, nombres); Eso es porque el segundo parámetro debe ser una dirección de tipo char constante... char * strcpy ( char * destination, const char * source );Prueba así: strcpy(may_nom [i ],(const char*)nombres [i ]);
B#
|
|
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
C no es tan estricto en ese sentido, así que no tiene sentido que te salte esa advertencia. Por ejemplo, he compilado el siguiente código diciéndole al compilador que me de alertas (-Wall), y no me ha dado ninguna: #include <string.h> int main() { char nombre[] = "Nombre"; char copia[64]; return 0; }
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Es "%s"
pero recomiendo mejor fgets para evitar el uso de fflush fgets(nombres [i ],25,stdin );
Asi tambien limitamos la entrada a un maximo de 25 caracteres. Y en lugar de strcpy mejor strncpy
Saludos
|
|
« Última modificación: 15 Junio 2016, 01:05 am por AlbertoBSD »
|
En línea
|
|
|
|
Rom_Stom
Desconectado
Mensajes: 3
|
El 'warning' ese se produce porque no has incluido 'string.h', sino que has incluido 'strings.h'. Otra cosa, cuando trabajas con los arreglos no accedes a estos con los corchetes. ¿Error al copiar o que simplemente no los has puesto? scanf("%c", nombres ); // Tendría que ser scanf("%c", nombres[i]);
Hay más casos en los que no pones los corchetes. Muchas gracias por la ayuda ahora si ya pude compliarlo
|
|
|
En línea
|
|
|
|
Rom_Stom
Desconectado
Mensajes: 3
|
Es "%s"
pero recomiendo mejor fgets para evitar el uso de fflush fgets(nombres [i ],25,stdin );
Asi tambien limitamos la entrada a un maximo de 25 caracteres. Y en lugar de strcpy mejor strncpy
Saludos Hice los cambios sugeridos muchas gracias
|
|
|
En línea
|
|
|
|
|
|