Ouvrir un fichier en C, avec variable

Résolu/Fermé
tortueninja - 6 janv. 2010 à 02:34
 tortueninja - 6 janv. 2010 à 04:44
Bonjour,

je souhaite ouvrir un fichier via la commande system("start fichier.doc"); , sauf que à la place de fichier.doc, j'aimerais utiliser une variable, et je ne connais pas la syntaxe pour utiliser une variable avec la fonction system.
Peut être n'en existe t'il pas, dans ce cas existe t'il une technique ? Ca fait des jours que je suis dessus je n'arrive pas a trouver la solution.

Cordialement :)
A voir également:

4 réponses

Salut

L'idéal pour programmer est quand même d'avoir sous le coude le manuel de référence du langage utilisé ! Par exemple, je n'imagine pas mon apprentissage du php sans une (voire plusieurs) page(s) sur https://www.php.net/manual/en/index.php

Si tu lisais ce manuel, tu verrais que la syntaxe de ta fonction system est int system(const char *command);
ce qui veut dire que la fonction system renvoie un entier que l'on se doit d'analyser pour détecter une éventuelle erreur et que cette fonction attend une chaine de caractères qu'elle ne modifiera pas.

Donc, le paramètre que tu donnes à cette fonction doit être soit une constante, soit une constante littérale, soit une variable initialisée, soit une variable contenant le résultat d'un calcul (très probablement d'une concaténation) soit une expression compliquée comme tu le souhaites. En un mot, tu es libre de lui donner ce que tu veux. Je t'invite donc à laisser libre cours à ton imagination (et à ton intelligence bien évidemment) et à tester tout ce que tu imagineras
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 janv. 2010 à 04:43
Salut,

Prends un tableau char, mettons de taille 128:

char cmd[128];


Sachant que tu as:
char *prog = "start ";

Et:
char *doc = "prout.doc"


Alors vérifie la longueur des deux pour ne pas dépasser la taille du buffer, puis utilise sprintf()
qui se comporte comme printf, sauf qu'au lieu d'afficher à l'écran, il va écrire dans une variable:

int len = strlen(prog) + strlen(cmd) + 1; // +1 pour le caractère fin de chaine

if (len <= sizeof(cmd)) {
    sprintf(cmd, "%s%s", prog, doc);
    system(cmd);
}
0
Merci d'avoir porté attention à ma demande, cependant, tu ne répond absolument pas à ma requête, je demande la syntaxe, j'ai étudier la fonction système, cependant, je le répète, ce n'est qu'une histoire de syntaxe, je n'arrive pas à trouver la bonne manière de l'écrire avec une variable (ce qui est sans doute dû à mon intelligence inférieure), j'aimerais qu'on m'aide avec un exemple, pour que je puisse l'appliquer ensuite.

Cordialement
0
Merci Kilian je vais essayer, cela devrait sans doute fonctionner !
0