Anuncios Google

¿Por qué da error esta función?

Aún estoy aprendiendo C, y uno de los aspectos más 'complicaos' para mí siguen siendo los punteros, que creo que es donde falla esta función.

¿Alguien podría echarme una mano?

-- ioutilities.h

char * strend(char * str, int c) {
	int len = strlen(str);
	// initial check
	if(len <= c)
		return NULL;
 
	char * ank = str;
	ank += len - c;
 
	return ank;
}
 
char * ioNopath(const char * path) {
	int num = strnum(path, "/"); // the number of ocurrences of "/" in the passed string, *path*
 
	int bufsize = strlen(path);
	char buffer[bufsize]; // create the buffer
	strcpy(buffer, path); // copy the passed string, *path*, in the buffer
 
	char * c;
	c = strtok(buffer, "/");
 
	if(num == 1) {
		c = strtok(NULL, "/");
		return c;
	}
 
	int i = 1; // index for the *loop*
	while (i < num) {
		c = strtok(NULL, "/");
		i++;
	}
	return c;
}
 
char * ioExtension(const char * path) {
	char * ank; // good programming practice
	ank = ioNopath(path); // allocate the filename&extension of the passed path
 
	int len = strlen(ank); // allocate the lenght of the filename&extension of the passed path
 
	int i = 0;
	while(i < len) {
		if(ank[i] == '.') {
			break;
		}
		i++;
	}
 
	char * c;
	c = ank;
	c = strend(ank, len - i - 1);
	c[len - i] = '\0';
 
	return c; // return last 'len' characters of string 'ank'
}

-- main.c

#define LOG1 "log/main.log"
 
#define MSG "holamundo, me llamo jorge" // no me llamo jorge xD
 
 
int main() {
 
    printf("\n > strend\n   >>> Last 5 characters in string '%s': '%s'", MSG, strend(MSG, 5));
 
    char * ank;
 
    ank = ioExtension(LOG1);
    printf("\n > ioExtension \n   >>> The extension of the log is: '%s'", ank);
 
    return 0;
}

Muchas gracias y un saludo


http://www.mhypnok.blogspot.com/

Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de dj51_Shura

No importa,

ya lo resolví. Como decía, era un problema de punteros; todo se acabó con unas cuantas rectificaciones.

Muchas gracias y un saludo


http://www.mhypnok.blogspot.com/

Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.