1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define READ_BUFFER_LEN 5
int main(void)
{
FILE *inputFile = fopen("fichier.txt", "r"); // return values of fopen() should be checked
FILE *outputFile = fopen("temp.txt", "w");
char readBuffer[READ_BUFFER_LEN] = {0};
const char * const openTag = "<balise>";
const char * const closeTag = "</balise>";
bool processingMultiReads = false; // indicate if the current line needs to multiple reads
while( fgets(readBuffer, READ_BUFFER_LEN, inputFile) != NULL )
{
printf("%s", readBuffer);
if(readBuffer[strlen(readBuffer)-1] == '\n')
{
readBuffer[strlen(readBuffer)-1] = '\0'; // delete '\n' in the buffer
if(processingMultiReads == false)
{
fprintf(outputFile, "%s%s%s\n", openTag, readBuffer, closeTag );
}
else
{
processingMultiReads = false; // EOL reached
fprintf(outputFile, "%s%s\n", readBuffer, closeTag);
}
}
else
{
if(processingMultiReads == false)
{
processingMultiReads = true;
fprintf(outputFile, "%s%s", openTag, readBuffer );
}
else
{
fprintf(outputFile, "%s", readBuffer);
}
}
}
if(feof(inputFile) != 0)
{
puts("Fin du fichier atteinte, traitement OK.");
}
else
{
perror("Erreur lors de la lecture");
}
fclose(inputFile);
fclose(outputFile);
} |
Partager