Vjerojatno je fseek krivo pozicioniran. Ako je već riječ o formatiranoj datoteci varijable dol i uku bi trebao učitati iz datoteke slijedom (čitati podatak po podatak pa doći i do njih) a ne direktno im pristupiti preko fseek.
Ovako?
#include <stdio.h>
int main () {
    FILE *fajl;
    fajl = fopen("opf.txt", "w+");
    int sk, dol, uku;
    float pos;
    char str[100], chr;
    fscanf(fajl, "%12s%d%c%d", str, &dol, &chr, &uku);
    printf("nisi bio (0), bio (1)\n");
    scanf("%d", &sk);
    if(sk == 0)
        uku++;
    if(sk == 1) {
        dol++;
        uku++;
    }
    pos = ((float)dol/uku)*100;
    fseek(fajl, 0, SEEK_SET);
    fprintf(fajl, "Dolaznost:\n\n%d/%d -- %d%%", dol, uku, pos);
    fclose(fajl);
    return 0;
}
Jer i ovako izbacuje neke totalno nepovezane brojeve kao i prije.
EDIT: za bolju preglednost, ovako izgleda opf.txt:
Dolaznost:
0/0 -- 0.00%
 
     
    
    
