Votre question

[C] Utilisation de fonction comme system avec des chaines

Tags :
  • Internet Explorer
  • Programmation
Dernière réponse : dans Programmation
27 Mai 2008 18:59:52

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:
  1. char t[20] = "<a href="http://www.yahoo.fr" rel="nofollow" target="_blank">http://www.yahoo.fr</a>";
  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

Autres pages sur : utilisation fonction system chaines

a b L Programmation
27 Mai 2008 20:41:24

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.
27 Mai 2008 21:11:38

Oui, je sais on peut utiliser start, mais c'était un exemple.
Mais dans ces cas, c'est alors impossible ?
Contenus similaires
27 Mai 2008 21:33:27

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.
27 Mai 2008 22:16:17

ohh, désolé cricky j'avais pas vu !
a b L Programmation
28 Mai 2008 20:41:04

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.
28 Mai 2008 20:51:51

euh, je veux bien par ce que je voix pa bien ce qu'il faut faire.
a b L Programmation
28 Mai 2008 22:38:28

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.
  1. char t1[] = "<a href="http://www.yahoo.fr" rel="nofollow" target="_blank">http://www.yahoo.fr</a>";
  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.  
  11. system( pBuffer );
  12.  
  13. free( pBuffer );

(code non testé)
29 Mai 2008 07:27:03

Merci beaucoup :D 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS