would be easier to read as:Code:!(pBuffer[i+k] == Keywords[j][k])
(And it's shorter to write).Code:(pBuffer[i+k] != Keywords[j][k])
Also, along the lines of what dwks says, there is a lot of code repetition in your functions still - particularly the bit that "take next character and output either itself or >/<. I think all of the loops can be translated into a generic function that loops around until some end condition - perhaps use strchr() to see if it's in a list of characters to terminate the current colour?