C++ ==> \stdlib.h too many arguments to function - C++ - Programmation
Marsh Posté le 10-04-2006 à 20:05:05
Ben system() ne prends qu'un paramètre, c'est pas un printf like.
Tu peux utiliser s(n)printf ou asprintf, pour créer la chaine a passer à system().
Du style :
Code :
|
Y'a qu'a tester une erreur possible de asprintf (renvoie -1), etc...
Marsh Posté le 10-04-2006 à 20:10:23
Merci flaie,
asprintf ne marche pas pour moi, par contre avec sprintf j'ai l'erreur suivante:
38 C:\Documents and Settings\antix.ADRIEN\Mes documents\dec\main.cpp cannot convert `char**' to `char*' for argument `1' to `int snprintf(char*, size_t, const char*, ...)'
JE débute vraiment en programmation quelqun pourrait il m'éclairer ?
Ps: j'ai aussi essayer :
-strcat(chaine1, chaine2)
==> 41 C:\Dev-Cpp\include\string.h too many arguments to function `char* strcat(char*, const char*)'
Je sais que je pourrais simplement taper sa dans l'invite de comande, mais ca serai moin "marant", quand à "coder réellement", je vais déja essayer de réussir mon programme pour continuer..
Marsh Posté le 10-04-2006 à 20:27:25
antix a écrit : asprintf ne marche pas pour moi |
Ah, j'avais même pas fait gaffe apparemment asprintf n'est pas dispo sous Windows par défaut ?.
Bon dans ce cas là utilise s(n)printf, mais il faut modifier l'appel.
Si tu veux pas t'emmerder avec l'allocation de mémoire (sachant que sprintf te renvoie la taille de la chaîne formatée, suffirais de faire un malloc après, ou voir si tu ne trouves pas asprintf pour Win) tu peux faire ça comme ça :
Code :
|
antix a écrit : Ps: j'ai aussi essayer : |
Idem, strcat prends 2 arguments, la chaîne cible dans laquelle on va concaténer le deuxième argument (une deuxième chaîne).
Mais il faut allouer la mémoire pour chaine1.
Marsh Posté le 10-04-2006 à 20:30:24
Code :
|
cmd est déjà l'adresse de ta chaîne de caractères. Inutile de passer son adresse &cmd.
snprintf est plus sûr que sprintf : ça t'évite de faire une erreur de segmentation si la chaîne de caractères est plus grande que ce que tu as alloué
EDIT : Flaie a été plus rapide !
Marsh Posté le 10-04-2006 à 23:09:38
si tu veux faire du c++ utilise std::ostringstream
Marsh Posté le 10-04-2006 à 23:20:36
ou std::string dans ce cas, il ne s'agit que de concatener des chaines
Code :
|
Marsh Posté le 11-04-2006 à 17:41:09
skelter a écrit : ou std::string dans ce cas, il ne s'agit que de concatener des chaines |
ou pas
Code :
|
Ca reste plsu flexible si y a des bouts de parametres qui seront différents d'une chaine
Marsh Posté le 10-04-2006 à 19:00:20
Bonjour, je souhaite creer un programme pour limiter l'utilisation du pc par mes enfants, mais la compilation plante à cette ligne:
Erreur ==> 356 C:\Dev-Cpp\include\stdlib.h too many arguments to function `int system(const char*)'
Quelqun aurait il une idée ?
Merci