#include #include // https://www.programmingsimplified.com/c/source-code/c-program-insert-substring-into-string // char *substring(char *string, int position, int length) { char *pointer; int c; pointer = malloc(length+1); if( pointer == NULL ) exit(EXIT_FAILURE); for( c = 0 ; c < length ; c++ ) *(pointer+c) = *((string+position-1)+c); *(pointer+c) = '\0'; return pointer; } void insert_substring(char *a, char *b, int position) { char *f, *e; int length; length = strlen(a); f = substring(a, 1, position - 1 ); e = substring(a, position, length-position+1); strcpy(a, ""); strcat(a, f); free(f); strcat(a, b); strcat(a, e); free(e); } int main(int argc, char **argv) { char col_start[]="\033[31;40m"; char col_end[]="\033[37;40m"; FILE *in=stdin; FILE *out=stdout; int i=1; char buf[256]; char buf2[255]; while(NULL!=fgets(buf,255,in)) { char *pos=strstr(buf,argv[1]); if(pos) { int p=pos-buf+1; int l=strlen(argv[1])+strlen(col_start); insert_substring(buf,col_start,p); insert_substring(buf,col_end,p+l); printf("%s",buf); } i++; } return EXIT_SUCCESS; }