باید آرایهٔ کاراکتری را مقدار دهی اولیه کنید.
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);
}