Hola.
Tengo una duda que deseo evacuarla ahora porque me impide seguir estudiando y es: como se pasan los vectores de punteros a las funciones.
Saludos y gracias. -
Tengo una duda que deseo evacuarla ahora porque me impide seguir estudiando y es: como se pasan los vectores de punteros a las funciones.
Código (c) [Seleccionar]
void ingreso( char *ptrFrases );
Código (c) [Seleccionar]
void ingreso( char ptrFrases[] );
Código (c) [Seleccionar]
int main( void ){
char *ptrFrases = NULL;
ingreso( ptrFrases );
ordenar( ptrFrases );
mostrar( ptrFrases );
return 0;
}
Dejo el programa por si les hace falta para interpretar mejor la duda, luego tengo que continuar consultándolos porque la siguiente linea sé que estoy haciendo todo mal pero es la primera vez que lo intento y realmente no logro solucionarlo, hacer lo mismo con números me funciona a la perfección, en cambio, con cadenas no. - Código (c) [Seleccionar]
tmp = (char*)realloc( ptrFrases+i, CARACTERES * sizeof(char) );
if( tmp!=NULL ){
strcpy( ptrFrases[i-1], tmp );
}
Código (c) [Seleccionar]
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#define CARACTERES 21
#define safeFree(p) saferFree((void**)&(p))
void ingreso( char *ptrFrases );
void vaciarBuffer( char tmp[] );
void ordenar( char *ptrFrases );
void mostrar( char *ptrFrases );
void saferFree( void **pp );
int main( void ){
char *ptrFrases = NULL;
ingreso( ptrFrases );
ordenar( ptrFrases );
mostrar( ptrFrases );
return 0;
}
void ingreso( char *ptrFrases ){
int i = 0, ok, opc;
char tmp[CARACTERES], ch;
while( 1 ){
printf( "\n Ingrese una palabra(maximo %d caracteres).....:", CARACTERES-1 );
fgets( tmp, CARACTERES, stdin );
vaciarBuffer( tmp );
do{
printf( "\n 1 - Ingresa otra frase\n 0 - Finalisa\n Ingrese opcion...: " );
ok = scanf( "%d", &opc ) == 1 && opc >= 0 && opc <=1;
while ((ch = getchar()) != EOF && ch != '\n');
}while( !ok );
if( opc == 0){
break;
}
i++;
tmp = (char*)realloc( ptrFrases+i, CARACTERES * sizeof(char) );
if( tmp!=NULL ){
strcpy( ptrFrases[i-1], tmp );
}
else{
safeFree( ptrFrases );
puts( "Error (re)allocating memory" );
exit(1);
}
}
}
void vaciarBuffer( char tmp[] ){
char *p = NULL;
size_t ch;
if((p=strchr(tmp, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
}
void saferFree(void **pp) {
if (pp != NULL && *pp != NULL) {
free(*pp);
*pp = NULL;
}
}
void ordenar( char *ptrFrases ){
printf( "\n No desarrollado" );
}
void mostrar( char *ptrFrases ){
printf( "\n No desarrollado" );
}
Saludos y gracias. -