J'ai un pointeur de fichier que j'utilise avec fgets() pour me donner une ligne complète avec la nouvelle ligne dans le buffer. Je veux remplacer 1 caractère et ajouter un autre caractère avant la nouvelle ligne. Est-ce possible? Par exemple:insérer du texte à l'intérieur d'une ligne
buffer is "12345;\n"
output buffer is "12345xy\n"
Voici le code:
buff = fgets((char *)newbuff, IO_BufferSize , IO_handle[i_inx]->fp);
nptr = IO_handle[i_inx]->fp;
if(feof(nptr))
{
memcpy((char *)o_rec_buf+(strlen((char *)newbuff)-1),"E",1);
}
else
{
memcpy((char *)o_rec_buf+(strlen((char *)newbuff)-1),"R",1);
}
Comme vous pouvez le voir ici (exemple de ligne est indiqué ci-dessus) Je remplace la nouvelle ligne. Je veux insérer le texte et conserver la nouvelle ligne au lieu de ce que je fais ci-dessus.
Montrez-nous du code et le problème que vous rencontrez. Ce que vous dites est très possible. Cependant, le manque de contexte approprié ne nous aidera pas à vous aider. – dirkgently
Pourquoi les moulages sont-ils nécessaires? Quel est le type de 'newbuff' et' o_rec_buff' qui les rend nécessaires? Vous devriez éviter les jets à moins qu'ils ne soient nécessaires, et il est loin d'être évident pourquoi ils seraient nécessaires. De même, le test '' if (feof (nptr)) ''est une importation de Pascal-think. Vous devriez tester la valeur de retour de 'fgets()'. Notez également que le contenu de la mémoire tampon n'est pas défini si l'appel de 'fgets()' échoue - cela signifie que vous ne pouvez pas vous fier à quelque chose de sain. (Ce sera probablement la même chose qu'avant l'échec de l'appel, mais vous ne pouvez pas vous en fier.) –