Exemple getline c

Depuis getline () sera realloc () la mémoire de votre appel à malloc (), calloc () fourni si elle est trop petite, il est préférable de simplement allouer votre meilleure estimation quant au stockage requis avec un appel à calloc (), et de faire comprendre ce que le pointeur char * foo fait. En tant que professionnel, vous devez éviter les fonctions non fiables et tout compilateur qui vous oblige à être dangereux. La mémoire tampon est terminée par la valeur null et inclut le caractère de saut de ligne, si un a été trouvé. Ensuite, appelez foo = calloc (size_t, size_t), puis appelez getline (p_foo,,); Je pense que getline (& foo,,) est mieux. La valeur de retour vous permet de distinguer les caractères null que getline lire en tant que partie de la ligne, en spécifiant la taille de la ligne. En résumé, faire un appel à calloc () avec une certaine bonne conjecture quant à la taille, ce qui rendra évident à quiconque lisant votre code que la mémoire est allouée qui doit être libre () d, peu importe ce que getline () fait ou ne fait pas plus tard. Lorsque getline est appelée, lineptr obtient une copie de & buffer, car C est Call-by-value. Vous pouvez penser à * comme le contraire de &, et qu`ils s`annulent mutuellement. La deuxième déclaration est presque la même que celle de la première. N`oubliez pas que si vous faites cela, vous êtes responsable de Free ()-ING la mémoire allouée par getline ().

La fonction getline () debute à la ligne 20. Sans doute, dans certains programmes, vous verrez le code qui utilise ces fonctions peu fiables, et parfois vous trouverez des compilateurs qui ne peuvent pas gérer la fonction getline plus sûr. Donc, fondamentalement, ce que la fonction getline fait est extrait des caractères du flux d`entrée et l`ajoute à l`objet de chaîne jusqu`à ce que le caractère de délimitation est rencontré. C`est le caractère de délimitation qui indique à la fonction d`arrêter la lecture d`entrée supplémentaire après avoir atteint ce caractère. L`opérateur indique clairement que vous passez l`adresse du pointeur que vous avez rentré de malloc (), calloc (). Le deuxième paramètre est un pointeur vers une variable de type size_t; ce paramètre spécifie la taille en octets du bloc de mémoire pointé par le premier paramètre. Essentiellement, lorsque vous créez une variable, * signifie un pointeur, lorsque vous référencez une variable, cela signifie déréférencer le pointeur (obtenir ce que le pointeur pointe vers). Ces fonctions sont identiques à leurs versions POSIX, sauf qu`il est autorisé, mais pas nécessaire pour définir errno sur l`erreur.

Les autres fonctions standard, y compris les gets, les fgets et les scanf, sont trop peu fiables. Les cotes sont faibles qui se produirait dans ce programme, mais c`est une bonne pratique de programmation à vérifier. Enfin, si vous êtes curieux, vous pouvez utiliser getline () avec la notation de tableau pour la mémoire tampon de stockage.

Comments are closed.