- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
/* возвращает в buf последние 4 символа имени файла filename */
void getfileext(unsigned char *buf, unsigned char *filename)
{
int i, j;
for (i = strlen((char *) filename) - 4, j = 0; i < strlen((char *) filename); i++, j++)
buf[j] = filename[i];
return;
}
А если длина имени меньше 4?
будет простое копирование мусора в начале, главное чтобы в buf было достаточно места, но это никак не связано с длиной filename. с третьим - может быть.
strcpy( buf, filename + strlen(filename) - 4 );
Без явной арифметики указателей.
int len = strlen(filename);
if (len >= 4)
strcpy(buf, filename[len - 4]);
else
buf[0] = '\0';
длинна известна, так что можно обойтись memcpy
strlen возвращает size_t, а не int
Сигнатура функции тоже доставляет.
readme
stdio.h
я уж не говорю про длинные имена: test.local
и совсем уж все плохо для файла/папки ".." например