L'errore credo sia in queste righe qui e precisamente nel while:
while ((row=mysql_fetch_row(res))) {
for (i=0; i<n; i++){
printf ("[%s]\t", row[i]);
}
row[1] = x;
row[2] = y;
printf ("\n");
//PARTE INSERIMENTO/UPDATE dati nel database
char str[79];
perchè se provo a chiudere il while ((row=mysql_fetch_eccetera
lasciando fuori row[1] row[2] e char str[79] mi stampa tutti i risultati del database ma poi mi dà segmentation fault.
ho provato subito dopo al ciclo a mettere un printf("ciao"); per vedere se me lo stampava ma non ci arriva. sembra proprio non uscire dal ciclo!!!!