Выделить цветом все внешние переменные
не могу понять, что записать в условие для внешних переменных. Программа выделяет больше, чем нужно (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);
}