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...
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...