Bonjour, je suis novice dans la programmation en C/C++ et j'ai quelques problèmes sur la lecture d'un fichier. Je vous explique ce qu'on me programme doit faire :
Mon but est de lire un fichier "fichier.txt" contenant des chaines de caractères à verifier. Dans un premier temps le fichier contient
nondata
nondata
0
0
J'utilise la fonction getline mais lorsque je compare la valeur à "nondata", le test me retourne faux. Et je n'arrive pas a comprendre pourquoi, pouvez vous m'aider. Merci bcp voici le code
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
*************************************************************************************************
// MAIN
// ------------------------------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
char* chain;
char* last = "00";
char* valeur = "00";;
char* current;
char* next;
std::ifstream fichier( "fichier.txt" );
std::string ligne; // variable contenant chaque ligne lue
if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
// cette boucle s'arrête dès qu'une erreur de lecture survient
if ( std::getline( fichier, ligne ) )
{
// créer le buffer pour copier la chaîne
size_t size = ligne.size() + 1;
char * buffer = new char[ size ];
// copier la chaîne
strncpy( buffer, ligne.c_str(), size ); //conversion strinf en char*
// utiliser le buffer
current = buffer;
}
}
while(std::getline( fichier, ligne ))
{
// créer le buffer pour copier la chaîne
size_t size = ligne.size() + 1;
char * buffer = new char[ size ];
// copier la chaîne
strncpy( buffer, ligne.c_str(), size);
// utiliser le buffer
next = buffer;
if(current == NULL)
current = "silence";
if(next == NULL)
next = "silence";
if(current == "silence")
{
if((last=="01")&&(last=="10"))
{
printf("erreur dans le fichier valeur non reconnue);
}
else
{
if(last=="00") valeur="00";
else valeur = "11";
}
}
else if(current == "nondata") //problème du test !!!!!!!!!! HELP ME
{ // ne vas pas dans la boucle
if(last=="00")
{
valeur="01";
}
else
if (last=="11")
{
valeur="10";
}
else if (last=="01")
{
if((next=="nondata")||(next=="zero")) valeur="10";
else if((next=="one")||(next=="silence"))valeur="11";
else printf("erreur dans le fichier valeur non reconnu");
}
else if (last=="10")
{
if((next=="nondata")||(next=="zero")) valeur="01";
else if((next=="one")||(next=="silence"))valeur="00";
else printf("erreur dans le fichier valeur non reconnu");
}
else printf("erreur dans le fichier valeur non reconnu");
}
else if(current == "one")
{
if (last=="00")
{
if((next=="nondata")||(next=="zero")) valeur="10";
else if((next=="one")||(next=="silence"))valeur="11";
else printf("erreur dans le fichier valeur non reconnu");
}
else if (last=="11")
{
if((next=="nondata")||(next=="zero")) valeur="01";
else if((next=="one")||(next=="silence"))valeur="00";
else printf("erreur dans le fichier valeur non reconnu");
}
else printf("erreur dans le fichier valeur non reconnu");
}
else if(current == "zero")
{
if (last=="01")
{
if((next=="nondata")||(next=="zero")) valeur="01";
else if((next=="one")||(next=="silence"))valeur="00";
else printf("erreur dans le fichier valeur non reconnu");
}
else if (last=="10")
{
if((next=="nondata")||(next=="zero")) valeur="10";
else if((next=="one")||(next=="silence"))valeur="11";
else printf("erreur dans le fichier valeur non reconnu");
}
else printf("erreur dans le fichier valeur non reconnu");
}
else
printf("erreur dans le fichier valeur non reconnu");
printf("%s",valeur);
last = valeur;
current = chain;
}
}
//------------------------------ MERCI BEAUCOUP
----------------------------------