Maison >développement back-end >C++ >Comment puis-je créer des tableaux de taille dynamique en C pour gérer des fichiers de taille inconnue ?
Tableaux dimensionnés dynamiquement en langage C
Considérez le code C suivant :
<br>int taille = 0;<br>int n = 0;<br>FILE* photo;</p> <p>photo = fopen("test.jpg", "r");<br>fseek(photo, 0, SEEK_END);<br>siz = ftell(photo);</p> <p>char Sbuf[taille]; // Erreur : tableau de longueur variable<br>fseek(picture, 0, SEEK_SET);<br>while (!feof(picture)) {</p> <pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture); // do stuff with the buffer // memset(Sbuf, 0, sizeof(Sbuf));
}
Dans ce code, le but est de lire le contenu d'un fichier dans un tampon, mais la taille du tampon est inconnue jusqu'à l'ouverture du fichier et sa taille est déterminée. Cependant, le langage C ne permet pas de déclarer des tableaux de longueurs variables.
Alternatives aux tableaux de longueur variable
Pour résoudre ce problème, il existe plusieurs alternatives :
<br>std::vector<char> Sbuf;</li></ul> <p>Sbuf.push_back(someChar);<br>
<br>char* Sbuf = new char[siz];</li></ul> <p>delete [] Sbuf; // Désallouer la mémoire une fois terminé<br>
Considérations
Bien que l'allocation dynamique fournisse un moyen de créer un tableau de taille variable, elle est livrée avec quelques mises en garde :
Conclusion
Bien que les tableaux de longueur variable ne soient pas pris en charge dans C, il existe plusieurs approches alternatives pour créer des tableaux dynamiques pouvant s'adapter à la taille des données à stocker. Il est essentiel de choisir l'option la plus appropriée en fonction des exigences et contraintes spécifiques du projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!