hallo,
ich versuche mir die funktion splitpath zu implementieren
ich habe einen fertigen code und muss ihn anpassen damit es für pfade in linux funktioniert.
main()
{
char * path = „home/man/dir1/IMAGE/hello/image.jpg“; // dateiname als bsp zum testen
//char *split_drive, *split_dir, *split_filename, *split_extension;
char split_drive[5], split_dir[260], split_filename[100], split_extension[10];
//aufruf der funktion
splitpath(path,split_drive,split_dir,split_filename,split_extension);
…
}
void splitpath(char *path, char *split_drive, char *split_dir, char *split_filename, char
*split_extension)
{
const char* end; /* end of processed string */
const char* p; /* search pointer */
const char* s; /* copy pointer */
int i=0;
/* extract drive name */
if (path[0] && path[1]==’:’) {
if (split_drive) {
*split_drive++ = *path++;
*split_drive++ = *path++;
*split_drive = ‚\0‘;
}
} else if (split_drive)
*split_drive = ‚\0‘;
/* search for end of string or stream separator */
//for(end=path; *end && *end!=’:’; )
for(end=path; *end; )
{
end++;
i++;
}
printf(„path length gerechnet: %d\n“,i);
printf(„path aus strlen: %d\n“,strlen(path));
/* search for begin of file extension */
//for(p=end; p>path && *–p!=’\’ && *p!=’/’; )
for(p=end; p>path && *–p!=’/’ && *p!=’/’; )
{
//printf(„ext i: %c\n“,*p);
if (*p == ‚.‘) {
end = p;
break;
}
}
if (split_extension)
/*for(s=end; (*split_extension=*s++); )
{
split_extension++;
printf(„ext i: %c\n“,*split_extension);
}*/
for(s=end; *s; )
{
*split_extension=*s; /**********FEHLER****************/
s++;
split_extension++;
printf(„s : %c\n“,*s);//j p g
printf(„split_extension : %c\n“,*split_extension);
}
fehler:der inhalt von s stimmt aber wird nicht copiert nach split_extension
kann mir jemand erklären warum ?
youssef