- Jeśli pisząc o plik binarnym masz na myśli dane w postaci binarnej, to do zapisu powinieneś użyć funkcji
fwrite
, a nie fprintf
, która zapisuje dane w postaci jawnej.
- Elementy tablicy mają kolejne indeksy, zaczynając od 0, więc nie trzeba dodatkowo zapisywać wartości tych indeksów, wystarczy kolejno zapisywać wartości elementów tablicy (serializacja):
for (i = 0; i < SIZE; ++i)
{
fwrite(&tab[i], sizeof(float), 1, fp);
}
Albo w jednej linii:
fwrite(tab, sizeof(float), SIZE, fp);
- Zmiana elementu o podanym indeksie:
int indeks = 4;
float nowa_wartosc = 1.23;
fseek(fp, indeks * sizeof(float), SEEK_SET);
fwrite(&nowa_wartosc, sizeof(float), 1, fp);
Zakładając, że elementy tablicy są typu float
.
Oczywiście to najkrótszy sposób, dodatkowo można/należy zrobić obsługę błędów.