file.txt che dovrebbe essere?? Prova con "%s;%s;%s\n"codice:fscanf(file.txt, "%s;%s;%s", stringa1, srtinga2, stringa3);
In ogni caso quel codice che hai scritto è sbagliato perché strncpy non appende il terminatore di stringa ( '\0' ).
Poi è molto più semplice fare tre strtok:codice:strcpy(s1, strtok(src, ";")); strcpy(s2, strtok(NULL, ";")); strcpy(s3, strtok(NULL, "\n"));