Здравствуйте !
Я в Си не силен, поэтому прошу сразу извинить за ламерский вопрос.
Мне нужна програмка на Си, которая бы вывела в консоль имена файлов в каталоге и их размер. Путем долгой медитации с Гуглем и Яндексом родилось у меня следующее уродство:
=======================================================================================
#include <stddef.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>int
main (void)
{
DIR *dir;
struct stat st;
dir = opendir("/var/log/apache/");
if (!dir) {
printf ("Cannot read directory contents\n");
return 1;
}
struct dirent* de;
while( (de = readdir(dir)) != 0 )
{
if (strcmp (de->d_name, ".") == 0 || strcmp (de->d_name, "..") == 0) continue;
stat(strcat("/var/log/apache/",strrchr(de->d_name,'\0')), &st);
printf("File: %s Size: %d bytes\n", de->d_name, st.st_size);
}
closedir(dir);
return 0;
}
=======================================================================================
Мое твареньице успешно компилируется, но работать не хочет - система (FreeBSD) сообщает:
Bus error (core dumped)
и на этом все заканчивается.
Вся беда, судя по всему, находится в этой строке:
stat(strcat("/var/log/apache/",strrchr(de->d_name,'\0')), &st);
ибо если ее закоментировать - то программа работает, но, ессно, не дает нужного результата.
Помогите, пожалуйста, победить эту напасть.