Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mencipta Tatasusunan Bersaiz Dinamik dalam C untuk Mengendalikan Fail Saiz Tidak Diketahui?
Tasusunan Bersaiz Dinamik dalam Bahasa C
Pertimbangkan kod C berikut:
int siz = 0;
int n = 0;
FILE* gambar;
gambar = fopen("test.jpg", "r");
fseek(gambar, 0, SEEK_END );
siz = ftell(gambar);
char Sbuf[siz]; // Ralat: Tatasusunan panjang boleh ubah
fseek(gambar, 0, SEEK_SET);
sementara (!feof(gambar)) {
n = fread(Sbuf, sizeof(char), siz, picture); // do stuff with the buffer // memset(Sbuf, 0, sizeof(Sbuf));
}
Dalam kod ini, matlamatnya adalah untuk membaca kandungan fail ke dalam penimbal, tetapi saiz penimbal tidak diketahui sehingga fail dibuka dan saiznya ditentukan. Walau bagaimanapun, bahasa C tidak membenarkan mengisytiharkan tatasusunan dengan panjang berubah-ubah.
Alternatif kepada Tatasusunan Panjang Boleh Ubah
Untuk menangani isu ini, terdapat beberapa alternatif:
Sbuf.push_back(someChar);
<br>char* Sbuf = char[siz] baharu;</li></ul> <p>padam [] Sbuf; // Agihkan memori apabila selesai<br>
Pertimbangan
Walaupun peruntukan dinamik menyediakan cara untuk mencipta tatasusunan bersaiz pembolehubah, ia disertakan dengan beberapa kaveat:
Kesimpulan
Walaupun tatasusunan panjang ubah tidak disokong dalam C , terdapat beberapa pendekatan alternatif yang tersedia untuk mencipta tatasusunan dinamik yang boleh menyesuaikan diri dengan saiz data yang akan disimpan. Adalah penting untuk memilih pilihan yang paling sesuai berdasarkan keperluan khusus dan kekangan projek.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Tatasusunan Bersaiz Dinamik dalam C untuk Mengendalikan Fail Saiz Tidak Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!