Comment gérer caractère de saut de ligne '\n' dans un fichier texte contre la linux caractères de saut de ligne \r\n caractères?

J'ai un code en C qui lit 1 ligne à la fois, à partir d'un fichier ouvert en mode texte à l'aide de

fgets(buf,200,fin); 

Le fichier d'entrée qui fgets() lit des lignes, est un argument de ligne de commande pour le programme.

Maintenant fgets quitte le caractère de saut de ligne inclus dans la chaîne copiée de buf.

Quelque part faire la ligne dans le code que j'ai vérifier

length = strlen(buf);

Pour certains des fichiers d'entrée , qui je pense sont édités sous *nix environnement de caractère de saut de ligne est juste '\n'

Mais pour certains autres cas de test des fichiers d'entrée(qui je pense sont modifiés/créés sous l'environnement Windows est de 2 caractères indiquant un retour à la ligne - '\r''\n'

Je veux enlever le caractère de saut de ligne et que vous voulez mettre un '\0', comme le terminateur de chaîne de caractères. Donc, je dois le faire soit -

    if(len == (N+1))
    {
    if(buf[length-1] == '\n')
     {
         buf[length-2] = '
    if(len == (N+1))
{
if(buf[length-1] == '\n')
{
buf[length-2] = '\0'; //for a `\r\n` newline
}
} 
'
; //for a `\r\n` newline } }

ou

if(len == (N))
{
 if(buf[length-1] == '\n')
 {
     buf[length-1] = '
if(len == (N))
{
if(buf[length-1] == '\n')
{
buf[length-1] = '\0'; //for a `\n` newline
}
} 
'
; //for a `\n` newline } }

Depuis les fichiers texte sont transmis comme argument de ligne de commande pour le programme je n'ai pas de contrôle sur la façon dont il est édité/composé et donc ne peut pas filtrer en utilisant certains outil pour faire des retours à la ligne cohérente.

Comment puis-je gérer cette situation?

Est-il un fgets fonction équivalente dans la bibliothèque standard C(sans extensions) qui peut gérer ces incompatible caractères de saut de ligne et retour d'une chaîne sans eux?

InformationsquelleAutor goldenmean | 2011-07-14