Ouvrir un fichier en C, avec variable

Résolu
tortueninja -  
 tortueninja -
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

fiu
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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
tortueninja
 
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
tortueninja
 
Merci Kilian je vais essayer, cela devrait sans doute fonctionner !
0