Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2011, 22:40
Avatar de Doommarine_Maxi
Doommarine_Maxi
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 9 meses
Puntos: 8
Problema con "char *" como funcion.

Hola, miren les queria comentar el siguiente problema.

Estoy probando una funcion para poder importar el texto de un archivo usando FILE.
El codigo con el que probe primero fue.


Código:
#include <stdio.h>
#include <string.h>

char *Abrir_fc(char* archivo)
{

	char carpeta[512];
        sprintf(carpeta, "Objetos/%s.sct", archivo); 
	FILE  *f;
	printf("Archivo: %s\n", carpeta);
	f = fopen(carpeta,"rb");
	if (f == NULL)
	{
		return "";
	} else {
		char *Importado = " ";
		char cad[512];
    		int suma = 0, t;
		printf("aca no hay error\n");
    		for (suma=0; suma < 32000; suma++){
			sprintf(cad, "");
        		fgets(cad, 8, f);
        		t = strlen(cad);
        		suma+= t;
        		sprintf(Importado, "%s%s", Importado, cad); 
    		}
		fclose(f);
		return Importado;
	}

}
Bueno con ese codigo no tuve problemas al compilar, solo que cuando ejecutaba el programa y probaba la funcion me decia: "línea 2: 6591 Fallo de segmentación"

"Arregle" el problema a medias y eso es lo que me molesto, ya que el codigo quedo asi:

Código:
#include <stdio.h>
#include <string.h>

char *importar_dato(char *, char *);
char *Abrir_fc(char*);


char *Abrir_fc(char* archivo)
{

	char carpeta[512];
        sprintf(carpeta, "Objetos/%s.sct", archivo); 
	FILE  *f;
	printf("Archivo: %s\n", carpeta);
	f = fopen(carpeta,"rb");
	if (f == NULL)
	{
		return "";
	} else {
		char Importado[32000];
		char cad[512];
    		int suma = 0, t;
		printf("aca no hay error\n");
    		for (suma=0; suma < 32000; suma++){
			sprintf(cad, "");
        		fgets(cad, 8, f);
        		t = strlen(cad);
        		suma+= t;
        		sprintf(Importado, "%s%s", Importado, cad); 
    		}
		fclose(f);
		return Importado;
	}

}
Como ven en vez de usar "char *" utilize un "char [32000]". pero la verdad no me gusto para nada, quisiera saber que estoy haciendo mal.

Antes que nada Gracias por leer esto y disculpen las molestias.