باید آرایهٔ کاراکتری را مقدار دهی اولیه کنید.
char final_msg[100]={0};
کدهای e\ غیر استاندارد است. توصیه شده که به جای اون از 33\ استفاده کنید.
https://stackoverflow.com/a/37204129/7508077
با این تغییرات کد به این شکل میشود.
#include <stdio.h>
#include <string.h>
// colors : 
#define RED    "\033[31m"
#define GREEN  "\033[32m"
#define YELLOW "\033[33m"
#define REST   "\033[0m"
void println(const char *text){
	printf("%s\n",text);
}
void normal(const char *text ) {
	println(text);
}
void warning(const char *text) {
	char final_msg[100]={0};
	strcat(final_msg,YELLOW);
	strcat(final_msg,text);
	strcat(final_msg,REST);
	println(final_msg);
}
void dangerous(const char *text) {
	char final_msg[100]={0};
	strcat(final_msg,RED);
	strcat(final_msg,text);
	strcat(final_msg,REST);
	println(final_msg);
}
int main(void) {
    normal("going to RUN");
    warning("gggg");
    dangerous("adfasdf");
    return 0;
}
میتوانید برای کار با رشتهها از توابع امنتری چون strncat هم استفاده کنید.
void dangerous(const char *text) {
	char final_msg[100];
	strncat(final_msg,RED, strlen(RED));
	strncat(final_msg,text, strlen(text));
	strncat(final_msg,REST, strlen(REST));
	println(final_msg);
}