begin process at 2012 05 28 17:17:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Big prob gcc


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Big prob gcc

mercredi 14 septembre 2005 à 19:16:04 | Big prob gcc

Alcantornet

Bonsoir (ou bonjour),

J'ai un gros problème avec Dev-cpp, quand je fais le code suivant:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    for(int i=0;i<argc;++i){
            printf("Arg %i: %s\n",i,argv[i]);
    }
   
    system("pause");
    return 0;
}

Jusqu'ici pas de problème.

 J'ouvre le cmd et puis je tape:

arg.exe "C:\data" "C:\data\text.txt" "D:\data"

J'obtient ceci:

Arg 0: D:\Documents and Settings\Alcantor\Bureau\arg.exe
Arg 1: C:\data
Arg 2: C:\data\text.txt
Arg 3: D:\data
Appuyez sur une touche pour continuer...

Jusqu'ici toujours pas de problème.

Mais quand je tape:

arg.exe "C:\data\" "C:\data\text.txt" "D:\data"

J'obtient ceci:

Arg 0: D:\Documents and Settings\Alcantor\Bureau\arg.exe
Arg 1: C:\data" C:\data\text.txt D:\data
Appuyez sur une touche pour continuer...


et je voudrais avoir:

Arg 0: D:\Documents and Settings\Alcantor\Bureau\arg.exe
Arg 1: C:\data\
Arg 2: C:\data\text.txt
Arg 3: D:\data
Appuyez sur une touche pour continuer...

Si qqun pouvait m'aider à trouver une solution, parce que si un utilisateur met "C:\data\" je voudrai que ça fonctionne. Merci d'avance (et merci d'avoir lu jusqu'au bout ).
mercredi 14 septembre 2005 à 19:31:07 | Re : Big prob gcc

cosmobob

Réponse acceptée !
salut,
le \ est compris comme un caractere d'échappement, du coup \" ne doit pas etre considéré comme un \ suivi de la fin de la chaine, mais uniquement comme le caractere "
mets le en double, sans doute t'auras plus ce prob. : arg.exe "C:\data\\" "C:\data\text.txt" "D:\data"

a+

mercredi 14 septembre 2005 à 20:06:01 | Re : Big prob gcc

Alcantornet

Merci cosmobob, maintenant j'comprend pourquoi mais il doit bien avoir un moyen de contourner ou de résoudre le problème, parce que quand je tape copy "c:\data\" "C:\data2\" dans le cmd ça fonctionne bel et bien.

Alors j'ai peut-être une idée au lieu d'utiliser int main(int argc, char *argv[]) utiliser
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)


J'ai fais ce code:

#include <windows.h>
#include <stdio.h>

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    printf("::%s::\n",lpszArgument);
    system("pause");
    return 0;
}

Quand je tape:

arg.exe "C:\data\" "C:\data\text.txt" "D:\data"

J'obtient ceci:

::"C:\data\" "C:\data\text.txt" "D:\data"::
Appuyez sur une touche pour continuer...

Pouvez-vous me dire s'il existe, une fonction qui permet analyser les arguments de lpszArgument pour les avoir dans un tableau comme dans char *argv[].

mercredi 14 septembre 2005 à 20:19:55 | Re : Big prob gcc

BruNews

Administrateur CodeS-SourceS
quel rapport entre taper sur une console avec un listing qui passe dans un compilo C/C++ ???

ciao...
BruNews, MVP VC++
mercredi 14 septembre 2005 à 20:40:25 | Re : Big prob gcc

Alcantornet

OUhhgh (j te comprend pas BruNews)

Ce que je veux savoir c'est si il existe une fonction qui permet de découper "C:\data\" "C:\data\text.txt" "D:\data" en "C:\data\","C:\data\text.txt" et "D:\data".

Ou bien si il faut que je la fasse moi.
mercredi 14 septembre 2005 à 21:49:58 | Re : Big prob gcc

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Regarde CommandLineToArgvW dans MSDN, moi je préfère parser mes arguments avec 2 pointeurs, mais bon...


ciao...
BruNews, MVP VC++
jeudi 15 septembre 2005 à 09:01:24 | Re : Big prob gcc

Alcantornet

Merci beaucoup je crois que vais me débrouiller avec ça.
jeudi 15 septembre 2005 à 10:56:33 | Re : Big prob gcc

Alcantornet

Voilà un code qui marche pour ceux que ça intéresse:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <shellapi.h>


char** GetArgv(int &nArgs){
   char ** argv;
   char * out;
   out = GetCommandLine();
  
   argv = (char **)malloc(1);
   nArgs=0;
   int arglen=0;
   bool gui=0;
   for(int i=0;i<strlen(out);++i){
       if(out[i]=='"') gui=!gui;
       if(out[i]==' ' && !gui){
           if(out[i-1]!=' '){
               ++nArgs;
               //printf("\n%i: ",nArgs);
               argv = (char **)realloc(argv,nArgs+2);
               argv[nArgs] = (char *)malloc(1);
               arglen=0;
           }
       }else{
           //printf("%c",out[i]);
           argv[nArgs] = (char *)realloc(argv[nArgs],arglen+16);
           argv[nArgs][arglen]=out[i];
           argv[nArgs][arglen+1]=0;
           ++arglen;
       }   
   }
   return argv;
}

int main(){
   
    char ** argv;
    int narg;
    argv =  GetArgv(narg);
    for(int i=0; i<=narg; i++) printf("%i: %s\n", i, argv[i]);
   
    system("pause");
}

avec ce code j'obtient ceci:

0: "D:\Documents and Settings\folly.KOBRA\Bureau\test.exe"
1: "C:\data\"
2: "C:\data\text.txt"
3: "D:\data"
Appuyez sur une touche pour continuer...





Cette discussion est classée dans : exe, text, data, txt, arg


Répondre à ce message

Sujets en rapport avec ce message

Modification chaine dans exe [ par nohva ] Salut à tous ! Voila mon problème. J'ai une appli qui affiche un ShowMessage : "Salut toi". A partir d'une autre appli j'aimerais modifier ce messa récupérer le text d'une textBox [ par typhoun ] je voudrai mettre le texte d'une textbox dans un char mais sa me met une erreur.char* data;data = (char*) malloc(15);data = this->textBox1->Text;et l' lecture d'un fichier txt et affichage (SOS) [ par malouve ] bonjour,j'ai 2 gros pbsle premier est que je n'arrive pas à lire correctement un fichier txt qui se presente sous la forme d'un tableau à 9 colonnes e Probleme d'INSERT en vs2005 [ par ghostleretour ] Bonsoir à tous,Ce petit message HELP car je tourne en rond depuis des heures sur le net et je ne trouve pas de solution à mon probleme.Une exception n identification de caracteres dans un fichier TXT [ par enrageur ] Voila j'aimerais compter le nombre de fois qu'il y a un mot dans un fichier text.J'ouvre le fichier text, ensuite je le lit et je le met dans une vari Impossible ouvrir fichier en C [ par fredsor ] Bonjour,Je dois développer une appli en C sous eMbedded Visual C++J'essaye betement d'ouvrir un fichier txt avec la fonction fopen(), mais il passe to Changement de couleur d'un Static Text [ par groschatchat ] Sous Borland C++ 5.02, j'ai une boite de dialogue contenant un champ Satic Text appelé "IDC_MSG_ALERTE"J'aimerai savoir s'il est possible de changer l conversion [ par anubis52100 ] je souhaiterai conaitre le code pour convertir un CString en Char*voila se que j'ai fait mais jarive pas a convertir strNom en char*j'y arive mais qua quel programme pour modifier un exe [ par ata100t ] super neuneu en programmation mais tres curieux, (rester au dos et fichier .bat)je souhaite modifier servudaemon.exe histroire de comprendre comment c Creation controle sans connaitre largeur [ par fredsor ] Bonjour,J'aimerais pouvoir créer une fenetre contenant un nombre x de boutons, editbox ou static control, a partir de parametre donnés en entrée. Cepe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales