Visual Studio 2010: ouvrir et lire un fichier texte

Signaler
Messages postés
12
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
21 juin 2014
-
Messages postés
14855
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
-
Bonjour,

Je voudrais lire un fichier texte contenant deux nombres par ligne (type double), comme ceci:
7,19034877668180e-05 0,000821860625925690
0,000143259746575218 0,000812466396235072
0,000213525712209580 0,000796888806688482
0,000282166618243677 0,000775246412148374

Comment faire?

9 réponses

Messages postés
29734
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
338
Bonjour,

Et quel est le souci exactement ?
Ouvrir un fichier ?
Lire le fichier ligne par ligne ?

....??


As tu regardé sur le net ?
http://www.cplusplus.com/forum/beginner/8388/

http://stackoverflow.com/questions/7868936/c-read-file-line-by-line

Pour rappel :


Merci de garder à l'esprit que CodeS-SourceS est une communauté d'entraide.

Toutes les réponses sur le forum sont assurées par des bénévoles
qui donnent de leur temps libre pour aider à résoudre les problèmes.

A noter également que nous ne faisons pas dans le "tout cuit" et ne sommes pas là pour remplacer votre moteur de recherches...
... Soit tu trouves ton bonheur dans la partie source du site, soit à l'aide de ton moteur de recherche favori.

Ici, nous aidons volontiers sur des sujets techniques précis.

Je t'invite à lire avec attention le contenu du lien suivant :
charte-de-commentcamarche-net : conseils-d-ecriture

Ainsi que celui concernant l'utilisation de la coloration syntaxique :
Utilisation des Balises de code

Merci donc de reformuler ta demande en respectant ces quelques points.

Quelques points essentiels à retenir :
- On ne pose qu' UNE question par discussion
- Le titre de la question doit refléter le souci rencontré ( Help.. SOS.. Urgent.. n'apporte aucune information utile !)
- Lorsque votre question est résolue.. merci de clore le sujet (lien Marquer comme résolu se trouvant sous le titre de votre question).
- Une question obtiendra de meilleurs réponses si elle est correctement rédigée, que les explications sont clairs et qu'éventuellement vous postez le code qui pose problème.
- Si vous avez un message d'erreur..... MARQUEZ LE (dans son intégralité).

Merci.



Messages postés
12
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
21 juin 2014

Bonjour.

J'utilise depuis peu de temps visual studio, j'ai essayé ce code mais il ne se passe rien lorsque je lance l'application. Je crois qu'il faut l'écrire en C# (langage que je connais peu) et non pas en C++:

void CNstSquiggleCtrlDemoCppDlg::OnBnClickedButton3()
  {
      ifstream F;
      double X,Y,x,y;
      X=0;
      Y=0;
      F.open("trajectoire cercle 5mm de rayon.txt", ios::in);
      while(! F.eof() )
      {
          F>>x>>y; //lecture des coordonnées x et y d'un point de la trajectoire
          if( !F.fail() )
          {
              SendDisplacementBothOneBis((x-X)*1000000); //déplacement du moteur 1
              SendDisplacementBothTwoBis((y-Y)*1000000); // déplacement du moteur 2
              X=(x+X)*1000000; //mise à jour de la coordonnée actuelle X
              Y=(y+Y)*1000000; //mise à jour de la coordonnée actuelle Y
          }
      }
      F.close();
  }
Messages postés
29734
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
338
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Message édité pour ajouter les balises de code.
Messages postés
29734
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
338
Je crois qu'il faut l'écrire en C# (langage que je connais peu) et non pas en C++:
Comment ça ?
C'est à toi de choisir le langage dans lequel tu souhaites programmer...

Et au cas où tu souhaites le faire en csharp...une petite recherche sur le net sur comment lire un fichier text te donnera la réponse à ta question... non ?
Messages postés
12
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
21 juin 2014

J'ai utilisé un tutoriel trouvé sur le net (voir mon code en c++), et il ne fonctionne pas.
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Ce n'est pas que le code ne fonctionne pas (il fait bien ce qu'il dit). C'est juste que tu ne comprends pas ce qu'il fait, et il ne fait effectivement pas ce que tu veux.
Je ne rentrerais pas dans le détails du code présenté, qui a des "lourdeurs", du code inutile, et des inélégances. Je te conseille dans un premier temps de choisir un langage, et d'en apprendre les bases. Copier coller des codes et ajouter des instructions un peu au hasard ne te mènera nul part.

Pour l'exemple donné, un chiffre décimal, par défaut, est séparé par des "." et non des ",". Par défaut le code utilise des normes anglaises/américaines, et non française. Soit tu écris tes décimaux avec des points, soit tu utilises une localisation française (mais c'est plus dur à réaliser).

__________________________________________________________________________________________________
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Messages postés
12
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
21 juin 2014

En fait je dois modifier un programme existant qui a été réalisé par quelqu'un d'autre, je ne sais pas en quel langage il est écrit, C++ ou C#? Je sais juste qu'il utilise une bibliothèque activeX, voilà un bout d'un fichier ccp:

// NstSquiggleCtrlDemoCppDlg.cpp : implementation file
//

#include "stdafx.h"
#include "NstSquiggleCtrlDemoCpp.h"
#include "NstSquiggleCtrlDemoCppDlg.h"
#include ".\nstsquigglectrldemocppdlg.h"
#include <math.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


/*****************************************************************************
*
* Static information used in displaying the list of axis owned by a
* controller.
*
******************************************************************************/

typedef struct _AXIS_LVCOLUMN
{
char *m_pszStr; // Column Name
int m_nWidth; // Default width of column
int m_nFormat; // Format (left, center or right justified)

} AXIS_LVCOLUMN;

typedef struct Point
{
double x;
double y;
} Point;

// Column Indexes
#define AXIS_LVC_NUMBER 0
#define AXIS_LVC_POSITION 1
#define AXIS_LVC_ERROR 2
#define AXIS_LVC_ENCRES 3
#define AXIS_LVC_STATUS 4
#define AXIS_LVC_ATLIMIT 5

// Column List
static AXIS_LVCOLUMN g_AxisColumn[] =
{
{ "Axis", 60, LVCFMT_LEFT }, // Col 0: Left used regardless of this setting
{ "Position (µm)", 150, LVCFMT_RIGHT },
{ "Error (µm)", 70, LVCFMT_RIGHT },
{ "Enc Res", 60, LVCFMT_RIGHT },
{ "Status", 100, LVCFMT_CENTER },
{ "At Limit", 60, LVCFMT_CENTER },
{ 0 }
};


/*****************************************************************************
*
* Position Units Lookup Table
*
******************************************************************************/
static char *s_pszUnitsArray[] =
{
"enc",
"nm",
"µm",
"mm",
"in",
"asec",
"deg",
"urad",
"rad",
"grad",
NULL,
};


/*****************************************************************************
*
* Dialog Control IDs
*
******************************************************************************/

// Closed loop specific IDs
static UINT CL_Controls[] =
{
IDC_ENC_REF_CHK,
IDC_ZERO_BTN,
IDC_TARGET_EDIT,
IDC_TARGET_BTN,
IDC_HOME_BTN,
IDC_ENC_STEP_EDIT,
IDC_STEP_REV_BTN,
IDC_STEP_FWD_BTN,
IDC_RUN_SPEED_EDIT,
IDC_CUT_SPEED_EDIT,
IDC_ACCEL_EDIT,
IDC_APPLY_SPEED_BTN,
IDC_TRAJECTORY_BTN,
0,
};


// Open loop specific IDs
static UINT OL_Controls[] =
{
IDC_CL_ENA_CHK, // Closed loop enable must be accessable when in open loop mode
IDC_EEPROM_BTN,
IDC_SEND_BTN,
IDC_COMMAND_EDIT,
IDC_JOG_REV_BTN,
IDC_JOG_FWD_BTN,
IDC_RUN_REV_BTN,
IDC_RUN_FWD_BTN,
IDC_STOP_BTN,
IDC_MTR_STEPS_EDIT,
IDC_STEP_INTERVAL_EDIT,
IDC_STEP_DURATION_EDIT,
IDC_STEPS_ONE_EDIT,
IDC_STEPS_TWO_EDIT,
IDC_INTERVAL_ONE_EDIT,
IDC_DURATION_ONE_EDIT,
IDC_INTERVAL_TWO_EDIT,
IDC_DURATION_TWO_EDIT,
IDC_BURST_REV_BTN,
IDC_BURST_FWD_BTN,
IDC_SPEED_SLIDER,
IDC_COORDX,
IDC_COORDY,
IDC_STATIC,
0,
};



/*****************************************************************************
*
* Axis Status Flags (value returned by get_Status())
*
******************************************************************************/

#define F_USER_RUNMODE 0x000001 // MOTOR IN USER RUN MODE
#define F_DIRECTION 0x000002 // DIRECTION FLAG
#define F_RUNNING 0x000004 // MOTOR RUNNING
#define F_RUNNING_MSK 0x000006 // MOTOR RUNNING/DIR MASK
#define F_RUNNING_FWD 0x000006 // MOTOR RUNNING IN FWD DIRECTION
#define F_RUNNING_REV 0x000004 // MOTOR RUNNING IN REV DIRECTION
#define F_INTERLOCK 0x000008 // INTERLOCK (Controllers equipped to handle smart connector only)
#define F_NUMBERED_BURSTS 0x000010 // SPECIFIC NUMBER OF BURSTS COMMAND
#define F_TIMED_RUN 0x000020 // TIMED RUN (using TMR1)
#define F_MULTIPLX_PCB 0x000040 // Multiplexer PCB Connected
#define F_COMP_CONTROL 0x000080 // UNDER COMPUTER CONTROL FLAG

#define F_AT_FWD_LIMIT 0x000200 // CURRENTLY AT FORWARD LIMIT
#define F_AT_REV_LIMIT 0x000400 // CURRENTLY AT REVERSE LIMIT
#define F_BURST_MODE 0x000800 // SET TO 1 FOR BURST MODE OPERATION

#define F_CL_ENC_ERR 0x010000 // SET IF ENCODER MISSED COUNT ERROR DETECTED
#define F_CL_ENC_ZERO 0x020000 // SET IF ZERO MARK READ ENABLED
#define F_CL_ON_TARGET 0x040000 // SET IF POSITION = TARGET
#define F_CL_MV_TARGET 0x080000 // SET IF MOVING TOWARD A TARGET
#define F_CL_MAINT_MODE 0x100000 // MAINTENANCE MODE FOR MAINTAINING POSITION
#define F_CL_MODE_ENABLE 0x200000 // SET IF CLOSED LOOP MODE ENABLED
#define F_CL_ACCEL 0x400000 // SET IF ACCELERATING
#define F_CL_STALLED 0x800000 // SET IF STALLED


/*****************************************************************************
*
* CAboutDlg dialog used for App About
*
******************************************************************************/

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
enum { IDD = IDD_ABOUTBOX };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

// Implementation
protected:
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()




/*****************************************************************************
*
* CNstSquiggleCtrlDemoCppDlg dialog
*
******************************************************************************/


//-------------------------------------------------------------------
// CNstSquiggleCtrlDemoCppDlg
//-------------------------------------------------------------------
CNstSquiggleCtrlDemoCppDlg::CNstSquiggleCtrlDemoCppDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNstSquiggleCtrlDemoCppDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_nCurAxis = 0;
}


Mon stage se termine dans moins d'un mois et je n'ai pas le temps d'étudier les bases en programmation.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
C'est C++ utilisant MFC.

ciao...
Messages postés
14855
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
444
Bonjour
Mon stage se termine dans moins d'un mois et je n'ai pas le temps d'étudier les bases en programmation.

Ça me choque un peu, si tu as un stage dans lequel tu dois modifier un programme sans avoir les bases de la programmation, alors ton stage est mal choisi.

C'est un peu comme si on te demandais de faire du calcul mental sans avoir appris les tables de multiplication!