Tom's Guide > Forum > Programmation > [C] Utilisation de fonction comme system avec des chaines

[C] Utilisation de fonction comme system avec des chaines

Forum Programmation : [C] Utilisation de fonction comme system avec des chaines

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjours,
j'aimerais utiliser la fonction system avec une chaine de caractere ou une variable mais je n'y arrive pas...

Si ce n'est pas tres clair un petit exemple s'impose:

Code :
  1. char t[20] = "http://www.yahoo.fr";
  2.     system("C:\\Program Files\\Internet Explorer\\iexplorer.exe -\"\"",t);



Mais j'ai l'erreur suivante:
"too many arguments to function 'system'"

Donc si vous avez une solution, je vous écoute, merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Déjà on utilise la commande "start" et pas directement l'exécutable iexplorer.exe (il faut penser à ceux qui ont changé d'explorateur internet par défaut).
Enfin, comme te dis l'erreur, la fonction système ne prend qu'un seul paramètre ! Donc, concatène les 2 chaines classiquement en C.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Oui, je sais on peut utiliser start, mais c'était un exemple.
Mais dans ces cas, c'est alors impossible ?

Répondre à ptitcois

Citation :

Donc, concatène les 2 chaines classiquement en C.


On peut difficilement faire plus clair. Regarde du coté des fonctions de string.h (par exemple strcat, qui sert justement à concaténer deux chaines de caractères).
Si tu fais f(a,b); tu passes deux arguments à la fonction f, si la fonction n'en prend qu'un ça ne peut pas marcher.
Y'a pas de concaténation magique qui se fait.

Répondre à Rakipu

ohh, désolé cricky j'avais pas vu !

Répondre à ptitcois

Pas de problème ;).
C'est possible en utilisant les fonction strcpy et strcat (en créant les buffers qui vont bien). Si tu as des problèmes pour le faire, tu peux demander.


Message édité par CRicky le 28-05-2008 à 20:41:24
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

euh, je veux bien par ce que je voix pa bien ce qu'il faut faire.

Répondre à ptitcois

Je le fais en créant une chaine adaptée au résultat pour éviter tout buffer overflow (dépassement de la taille du buffer) dans la concaténation.

Code :
  1. char t1[] = "http://www.yahoo.fr";
  2. char t2[] = "start "; // je met l'espace ici, mais on peut faire un autre strcat
  3. char * pBuffer = (char *)malloc( strlen(t1) + strlen(t2) + 1 ); // +1 car il faut le caractère de fin de chaine
  4. if( !pBuffer )
  5. {
  6.   // Erreur: pas assez de mémoire
  7. }
  8. strcpy( pBuffer, t2 ); // on copie t2 dans le buffer
  9. strcat( pBuffer, t1 ); // on concatène t1 à la fin de la chaine du buffer
  10. system( pBuffer );
  11. free( pBuffer );


(code non testé)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > [C] Utilisation de fonction comme system avec des chaines
Aller à :

Il y a 2566 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens