Выделить цветом все внешние переменные

не могу понять, что записать в условие для внешних переменных. Программа выделяет больше, чем нужно (int, char, include). В test.txt написан код программы.

#include <stdio.h>
#include <string.h>
#include <Windows.h>

#define VARIABLE 1
#define NOT_THE_VARIABLE 0
#define MAXLEN 1000
#define _CRT_SECURE_NO_WARNINGS

int main(void)
{
    HANDLE hStdout;

    FILE* fp;
    char line[MAXLEN];
    char word[MAXLEN];
    int i;
    int flag;
    int prev_flag;
    char* ptr;
    char save = '=';
    WORD foregroundColor0;
    WORD foregroundColor1;
    WORD foregroundColor;
    WORD backgroundColor;
    WORD textAttribute;

    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

    foregroundColor0 = FOREGROUND_INTENSITY | FOREGROUND_BLUE |
        FOREGROUND_GREEN | FOREGROUND_RED;
    foregroundColor1 = FOREGROUND_INTENSITY | FOREGROUND_RED;

    SetConsoleTextAttribute(hStdout, 7);

    fp = fopen("test.txt", "rt");
    if (fp == NULL)
        return 1;
    while (!feof(fp))
    {
        ptr = fgets(line, MAXLEN, fp);

        if (ptr == NULL)
            break;

        i = 0;
        prev_flag = flag = NOT_THE_VARIABLE;

        word[0] = '\0';

        while (*ptr != 0)
        {
            if (*ptr == ' ')
                save = *(ptr - 2);
            prev_flag = flag;
            if ((*ptr <= 'z' && *ptr >= 'a') && (save != '('))
                flag = NOT_THE_VARIABLE;
            else
                flag = VARIABLE;

            if (flag != prev_flag)
            {
                word[i] = '\0';

                foregroundColor = (prev_flag == VARIABLE) ?
                    foregroundColor0 : foregroundColor1;
                textAttribute = foregroundColor;
                SetConsoleTextAttribute(hStdout, textAttribute);

                printf("%s", word);
                i = 0;
            }
            word[i++] = *ptr++;
        }
        if (i != 0)
        {
            word[i] = '\0';
            foregroundColor = (prev_flag == VARIABLE) ?
                foregroundColor0 : foregroundColor1;
            textAttribute = foregroundColor;
            SetConsoleTextAttribute(hStdout, textAttribute);

            printf("%s", word);
        }
    }
    printf("\n");
    SetConsoleTextAttribute(hStdout, 7);
}

Ответы (0 шт):