замени в этой программе покраску через windows h #include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    // Открытие файла для чтения
    printf("%s\n", argv[1]);
    char* fname = argv[1];
    FILE* f = fopen(fname, "r");
    if (f == NULL)
    {
        printf("ERROR\n");
        return 1;
    }

    char с; //Переменная для символа
    char b[100]; // Буфер для чисел

    while ((с = fgetc(f)) != EOF)
    {
        char s = с; //Переменная для текущего символа
        if (s == '/')
        {
            int next_s = fgetc(f);
            // Проверка, является ли символ началом однострочного комментария
            if (next_s == '/')
            {
                putchar(s);
                putchar(next_s);
                // Чтение символов, пропуская комментарий
                while (((next_s = fgetc(f)) != EOF) && (next_s != '\n'))
                    putchar(next_s);
                putchar(next_s);
            }
            // Проверка, является ли символ началом многострочного комментария
            else if (next_s == '*')
            {
                putchar(s);
                putchar(next_s);
            } 
            else
            {
                ungetc(next_s, f);
                putchar(s);
            }
        }
        // Проверка, является ли символ концом многострочного комментария
        else if (s == '*')
        {
            int next_s = fgetc(f);
            if (next_s == '/')
            {
                putchar(s);
                putchar(next_s);
            }
            else
            {
                ungetc(next_s, f);
                putchar(s);
            }
        }
        // Проверка, является ли символ началом строкового литерала
        else if (s == '\"')
        {
            putchar(s);
            while (((s = fgetc(f)) != EOF) && (s != '\"'))//Чтение символов, пропуская литерал
                putchar(s);
            putchar(s);
        }
        // Проверка, является ли символ началом символьного литерала
        else if (s == '\'')
        {
            putchar(s);
            while (((s = fgetc(f)) != EOF) && (s != '\''))// Чтение символов, пропуская литерал
                putchar(s);
            putchar(s);
        }
        // Проверка, является ли символ началом константы, ключевого слова или идентификатора
        else if (!((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') || (s >= '0' && s <= '9') || s == '_'))
        {
            putchar(s);
            int next_s = fgetc(f);
            // Проверка, является ли символ началом шестнадцатиричной константы
            if (next_s == '0')
            {
                int next2_s = fgetc(f);
                if (next2_s == 'x' || next2_s == 'X')
                {
                    int i = 0;
                    b[i++] = next_s;
                    b[i++] = next2_s;

                    while ((s = fgetc(f)) != EOF)
                    {
                        //Если символ является цифрой или буквой от a до f и от A до F, то добавляем в буфер
                        if ((s >= '0' && s <= '9') || (s >= 'a' && s <= 'f') || (s >= 'A' && s <= 'F'))
                            b[i++] = s;
                        else
                        {
                            b[i] = '\0';
                            if ((i > 2) && (!((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') || (s >= '0' && s <= '9') || s == '_')))// Проверка, является ли число частью идентификатора
                                printf("\033[1;32m%s\033[0m", b);// Вывод цветных шестнадцатеричных констант
                            else
                                printf("%s", b);
                            ungetc(s, f);
                            break;
                        }
                    }
                }
                else
                {
                    ungetc(next2_s, f);
                    ungetc(next_s, f);
                }
            }
            else
                ungetc(next_s, f);
        }
        else
            putchar(s);
    }
    fclose(f);
    return 0;
}