So, my problem is pretty simple, I don't know why the first segment of code does not work properly. The program read a string of 12 characters from a pipe and the strcat fuction moves the pointer of buff from the first character to the next every time the fuction is executed and so after a few interactions the read function make the program fail because the buffer is not big enough anymore. Using the sprintf function and another string solve the issue but i don't understand what cause the problem. Thanks for the help.
int n;
char buff[15];
close(fd[1]);
while(n = read(fd[0],buff,12) > 0){
strcat(buff,"\n");
write(1,buff,13);
buff[0] = '\0';
}
int n;
char buff[15];
char output[15];
close(fd[1]);
while(n = read(fd[0],buff,12) > 0){
sprintf(output,"%s\n",buff);
write(1,output,13);
buff[0] = '\0';
}