Syntaxe en C

Résolu
Babou-_-linet -  
 Babou-_-linet -
Bonjour a tous,
voila ca fait un bail que je n'ai pas touché au C et je ne sais plus vraiment l'utiliser... =(

Je veux faire un programme et je sui s confronté a un soucis syntaxique.
En d'autres langages comme PHP ou Javascript ou autres... on peut utiliser le code exemple suivant :

fonction cherche_fichier_dans_dossier($nom_fichier)
{
   $dossier = './dossier/';
   $chemin_complet = $dossier.$nom_fichier;
}


En C est il possible de faire un
char *chemin_complet; 
de la meme facon ? En enfilant les valibles ? ou bien du texte plus simplement car le dossier est fixe.
Si oui, quelle syntaxe appliquer svp ?

5 réponses

loupius Messages postés 789 Statut Membre 148
 
Ok, le problème c'est, qu'en C, il n'existe pas de type 'chaînes de caractères'; on s'en tire, car on en a vraiment besoin, par un type 'tableau de caractères', mais un tableau à une taille fixe et quand on ajoute des chaînes il faut que la taille augmente et ce n'est pas automatique, alors il faut utiliser l'allocation dynamique et créér une fonction, par exemple:
char* ajouterChaine (char* chaine, char* ajout)
{
  char* nouvelle = malloc(strlen(chaine) + strlen(ajout) + 1);
  strcpy(nouvelle, chaine);
  strcat(nouvelle, ajout);
  free(chaine);
  return (nouvelle);
}

int main(void)
{
  char* string = NULL;
  string = ajouterChaine(string, "Bonjour");
  string = ajouterChaine(string, " à tous.");
  printf("%s\n", string);
  free(string);
  return (EXIT_SUCCESS);
}
Ce n'est qu'un exemple, mais j'espère que ceci répond à ta demande.
Bonne continuation.
1
loupius Messages postés 789 Statut Membre 148
 
En C, c'est beaucoup plus compliqué. Mais comme tout est toujours possible, il existe des fonctions pour farfouiller dans les répertoires; il s'agit de 'opendir', 'readdir' et 'scandir'.
Toutefois, je dois te préciser que ces fonctions ne sont définies que dans Posix; ce qui signifie que, sous Linux, tu n'auras pas de problèmes. Quant à Windoze, pour moi c'est un mystère.
Bonne continuation.
0
Babou-_-linet
 
Et bien en fait ce n'est pas tant la fonction pour fouiller dans les dossiers qui me gene.
ce qui me tracace c'est de d'arriver a obtenir une variable :
chemin_fichier = "./dossier/fichier.txt"

en partant de
chemin = "./dossier/";
fichier = "fichier.txt";


exemple concret :

char *afficher_verbe(char *verb)
{
   char *dossier = "./verbs/";
   FILE *fp = fopen(verb, "r");
   ETC...
   char *chemin_complet = ???

ce qui donnerait en un autre langage :
var chemin_complet = dossier+fp;


Voila je décrit bien pour etre sur que vous ayez bien saisi la question, et c'est pas pour vous prendre pour des noobs je vous rassure :D
0
Babou-_-linet
 
Ok ok, merci bien pour ton aide, ton exemple devrait suffir a terminer le programme... j'espere :D
C'est triste qu'il faille passer par la ^^
0
loupius Messages postés 789 Statut Membre 148
 
Non ce n'est pas triste; le C est un langage de bas niveau mais il sait tout faire, vite fait bien fait ;-)
Et n'oublie pas que pour combler cette lacune (et introduire de nouveaux concepts), le C++ fut défini avec une classe 'string'.
Bonne journée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Babou-_-linet
 
oui je me souviens, passé un an a faire du C, jusqu'ou il poussait :o et encore a cette époque j'étais loin de tout voir ^^
En fait j'ai arrété la programmation quand j'ai découvert le développement web ^^ mais ca fait bizarre de se remettre dedans :s
du coup , le C++ (jamais pratiqué) m'interesse =P

Bonne journée toi aussi, merci.
0