Lire le contenue d'un fichier en C++
Fermé
matlamis
Messages postés
18
Date d'inscription
vendredi 19 juin 2009
Statut
Membre
Dernière intervention
26 septembre 2012
-
7 nov. 2010 à 12:37
matlamis Messages postés 18 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 26 septembre 2012 - 13 nov. 2010 à 06:22
matlamis Messages postés 18 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 26 septembre 2012 - 13 nov. 2010 à 06:22
A voir également:
- Lire le contenue d'un fichier en C++
- Fichier rar - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Fichier host - Guide
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Lire fichier iso - Guide
6 réponses
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
7 nov. 2010 à 12:50
7 nov. 2010 à 12:50
Supprimer des espaces au début d'une chaîne ? Oh ce n'est vraiment pas difficile: il suffit d'écrire une boucle qui va tester le ième caractère (en commençant à 0) de la chaîne de caractères 'chn'. Lorsque le caractère (*chn+i) ne sera plus une espace, alors le résultat sera obtenu par: 'chn+i'.
Bonne continuation.
Bonne continuation.
matlamis
Messages postés
18
Date d'inscription
vendredi 19 juin 2009
Statut
Membre
Dernière intervention
26 septembre 2012
2
7 nov. 2010 à 13:05
7 nov. 2010 à 13:05
vous pouvez ajouter ça
pcq suis debutant
merci
pcq suis debutant
merci
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
7 nov. 2010 à 13:30
7 nov. 2010 à 13:30
En supposant que tu veuilles récupérer dans une nouvelle chaîne 'newChn' la chaîne 'chn' sans les espaces, on pourrait écrire:
NB: Si tu es sous Linux et s'il ne te gênes pas d'écrire du code non ANSI, alors tu peux simplidier en faisant appel à la fonction 'strdup'.
Bonne continuation.
char* chn = " abc"; char* newChn; int i = -1; while (*(chn+(++i)) == ' '); newChn = malloc(strlen(chn+i) + 1); strcpy(newChn, chn+i);Ce code n'est pas complètement sécurisé mais il doit fonctionner.
NB: Si tu es sous Linux et s'il ne te gênes pas d'écrire du code non ANSI, alors tu peux simplidier en faisant appel à la fonction 'strdup'.
Bonne continuation.
matlamis
Messages postés
18
Date d'inscription
vendredi 19 juin 2009
Statut
Membre
Dernière intervention
26 septembre 2012
2
Modifié par matlamis le 7/11/2010 à 22:41
Modifié par matlamis le 7/11/2010 à 22:41
FILE *fp = fopen("/var/etc/urlname","r");
if (fp)
{
memset(emuactive, 0, sizeof(emuactive));
fgets(emuactive, 200, fp);
fclose(fp);
int a=0;
for (a=0; a<strlen(emuactive); a++) if (emuactive[a]==(char)0x0a) emuactive[a]=0;
char *chn = emuactive;
char *newChn;
int i = -1;
while (*(chn+(++i)) == ' ');
{
newChn = malloc(strlen(chn+i) + 1);
strcpy(newChn, chn+i);
}
url = newChn;
il me donne comme erreur de compilation
error: invalid conversion from 'void*' to 'char*'
if (fp)
{
memset(emuactive, 0, sizeof(emuactive));
fgets(emuactive, 200, fp);
fclose(fp);
int a=0;
for (a=0; a<strlen(emuactive); a++) if (emuactive[a]==(char)0x0a) emuactive[a]=0;
char *chn = emuactive;
char *newChn;
int i = -1;
while (*(chn+(++i)) == ' ');
{
newChn = malloc(strlen(chn+i) + 1);
strcpy(newChn, chn+i);
}
url = newChn;
il me donne comme erreur de compilation
error: invalid conversion from 'void*' to 'char*'
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
7 nov. 2010 à 15:26
7 nov. 2010 à 15:26
Si l'erreur concerne la ligne newChn = malloc(strlen(chn+i) + 1);, c'est une question, je crois, de définition ISO. Avant, il fallait préciser le cast et maintenant ce n'est plus nécessaire. Comme un 'gars sérieux' traîne dans le coin, il va probablement le préciser.
Par contre, si l'erreur concerne la ligne url = newChn;, comme je ne sais pas ce qu'est le type 'eString', je ne saurais pas répondre.
Par contre, si l'erreur concerne la ligne url = newChn;, comme je ne sais pas ce qu'est le type 'eString', je ne saurais pas répondre.
matlamis
Messages postés
18
Date d'inscription
vendredi 19 juin 2009
Statut
Membre
Dernière intervention
26 septembre 2012
2
7 nov. 2010 à 22:44
7 nov. 2010 à 22:44
l'erreur est sur newChn = malloc(strlen(chn+i) + 1);
que faire alors ?
merci
que faire alors ?
merci
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
7 nov. 2010 à 22:58
7 nov. 2010 à 22:58
Il faut simplement 'caster': newChn = (char*)malloc(strlen(chn+i) + 1;. J'aurais pensé que le compilateur donnerait seulement un warning, mais pas une erreur. Bizarre... tu ne dois pas avoir un compilateur récent ou bien sa configuration est quelque peu insolite; Je n'en dirai pas plus car le compilateur n'est pas ma spécialité.
Bonne continuation.
Bonne continuation.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
matlamis
Messages postés
18
Date d'inscription
vendredi 19 juin 2009
Statut
Membre
Dernière intervention
26 septembre 2012
2
Modifié par matlamis le 8/11/2010 à 08:15
Modifié par matlamis le 8/11/2010 à 08:15
ça marche, merci
mais j'ai viens de constater que , quand j'écris le texte sur la deuxième ligne , il ne marche plus.
le problème était avant.
vous venaiz de corriger les espace.
comment je peux faire pour qu'il cherche le texte à lire sur toute la page.
NB: Ne touche pas tes lignes, le probleme est avant.
là où je mis des astérix.
if(!inDownloadFlag)
{
eString url;
eString name;
char emuactive[100];
FILE *fp = fopen("/var/etc/urlname","r");
if (fp)
{
memset(emuactive, 0, sizeof(emuactive));
* fgets(emuactive,200, fp);
* int a=0;
* for (a=0; a<strlen(emuactive); a++)
* if (emuactive[a]==(char)0x0a)
* emuactive[a]=0;
char *chn = emuactive;
char *newChn;
int i = -1;
while (*(chn+(++i)) == ' ');
{
newChn = (char *)malloc(strlen(chn+i) + 1);
strcpy(newChn, chn+i);
}
fclose (fp);
url = newChn;
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
else
{
url = "h**p://3w.kololkk.com/info.php";
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
}
mais j'ai viens de constater que , quand j'écris le texte sur la deuxième ligne , il ne marche plus.
le problème était avant.
vous venaiz de corriger les espace.
comment je peux faire pour qu'il cherche le texte à lire sur toute la page.
NB: Ne touche pas tes lignes, le probleme est avant.
là où je mis des astérix.
if(!inDownloadFlag)
{
eString url;
eString name;
char emuactive[100];
FILE *fp = fopen("/var/etc/urlname","r");
if (fp)
{
memset(emuactive, 0, sizeof(emuactive));
* fgets(emuactive,200, fp);
* int a=0;
* for (a=0; a<strlen(emuactive); a++)
* if (emuactive[a]==(char)0x0a)
* emuactive[a]=0;
char *chn = emuactive;
char *newChn;
int i = -1;
while (*(chn+(++i)) == ' ');
{
newChn = (char *)malloc(strlen(chn+i) + 1);
strcpy(newChn, chn+i);
}
fclose (fp);
url = newChn;
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
else
{
url = "h**p://3w.kololkk.com/info.php";
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
}
matlamis
Messages postés
18
Date d'inscription
vendredi 19 juin 2009
Statut
Membre
Dernière intervention
26 septembre 2012
2
13 nov. 2010 à 06:22
13 nov. 2010 à 06:22
Voici la solution.
eString url;
eString name;
char chn[256];
char *newChn;
int i = -1 ;
int a = 0;
FILE *fp = fopen("/var/etc/urlname","r");
if (fp)
{
memset(chn, 0, sizeof(chn));
while(fgetc(fp)!=EOF)
{
fgets(chn,256, fp);
}
for (a=0; a<strlen(chn); a++)
if (chn[a]==(char)0x0a)
chn[a]=0;
while (*(chn+(++i)) == ' ');
newChn = (char *)malloc(strlen(chn+i) + 1);
strcpy(newChn, chn+i);
fclose (fp);
url = newChn;
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
else
{
url = "h**p://3w.kololkk.com/info.php";
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
eString url;
eString name;
char chn[256];
char *newChn;
int i = -1 ;
int a = 0;
FILE *fp = fopen("/var/etc/urlname","r");
if (fp)
{
memset(chn, 0, sizeof(chn));
while(fgetc(fp)!=EOF)
{
fgets(chn,256, fp);
}
for (a=0; a<strlen(chn); a++)
if (chn[a]==(char)0x0a)
chn[a]=0;
while (*(chn+(++i)) == ' ');
newChn = (char *)malloc(strlen(chn+i) + 1);
strcpy(newChn, chn+i);
fclose (fp);
url = newChn;
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
else
{
url = "h**p://3w.kololkk.com/info.php";
name = " **** Lamis Serveur **** ";
CONNECT(theFetcher.downloadDone, eMyWindow::downloadDone);
downloadDoneFlag = 0;
currentName = name;
theFetcher.fetch(url);
}
7 nov. 2010 à 13:14
pcq suis debutant
merci