#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>

// Function to get the file extension/type
const char* get_file_type(const char* filename) {
    const char* dot = strrchr(filename, '.');
    if (!dot || dot == filename) return "Unknown"; // No extension
    return dot;
}

int main() {
    struct dirent *entry;
    struct stat file_stat;
    DIR *dir = opendir(".");  // Open current directory
    int file_count = 0;

    if (dir == NULL) {
        printf("Failed to open directory.\n");
        return 1;
    }

    printf("File Name\t\tSize (bytes)\tFile Type\n");
    printf("--------------------------------------------------------\n");

    // Loop through all entries in the directory
    while ((entry = readdir(dir)) != NULL) {
        // Skip directories like "." and ".."
        if (entry->d_type == DT_DIR) continue;

        // Get file statistics
        stat(entry->d_name, &file_stat);

        // Print file name, size, and file type
        printf("%-20s\t%ld\t\t%s\n", entry->d_name, file_stat.st_size, get_file_type(entry->d_name));
        file_count++;
    }

    closedir(dir);  // Close the directory

    printf("--------------------------------------------------------\n");
    printf("Total number of files: %d\n", file_count);

    return 0;
}
