2 solutions
1) tu connais pas la taille mais tu peux la connaitre (par le biais d'une fonction d'info quelconque) donc tu fais char *chaine=malloc(n * sizeof(char))
2) tu connais pas la taille et tu ne peux pas la connaitre. Alors il te faut programmer un algo de ce genre
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| déclarer un char *chaine=NULL, un size_t taille_allouée=0 et un size_t indice=0
tant que lecture 1 caractère ok
faire
si indice=taille_allouée
alors
augmenter taille_allouée de B caractères
chaine=realloc(chaine, taille_allouée * sizeof(char))
fin si
chaine[indice]=caractère_lu
indice++
fin faire |
De cette façon, t'es toujours sûr d'avoir assez de mémoire. Et en utilisant des tampons de taille "B" ça évite les realloc (lourds) à chaque fois que tu dois insérer un élément (surtout que tu peux, si tu le désires quand-même, positionner B à 1). Et en initialisant ton tableau à NULL et tes variables à 0, t'es sûr que t'auras un premier malloc avant toute insertion (le premier if est forcément vrai et quand le tableau initial est à NULL, realloc se comporte comme malloc).