Probleme lors de la compilation!!! Help!!!

Résolu
Noha819 Messages postés 74 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 19 octobre 2023 - 30 juil. 2009 à 22:43
Noha819 Messages postés 74 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 19 octobre 2023 - 31 juil. 2009 à 11:30
Salut! Je suis débutant en C, et jai un petit probleme sur un code
lors de la compilation... Je mexplique, jai créé une partie du code a part
comme un nouveau projet, le resultat est nickel, sauf que maintenant que je
l'ai mis en tant que fonction dans mon prog principal, il trouve une erreur
sur un while tout con. Il me dit "Syntaxe error befor while."
Et il block aussi sur le commande "strcpy" et "strcat" il me dit
"conflig types for "strcat"".
Voici les lignes en question:



-----------------------------------------------------------------------------------------
while( destination[i] != '\0' )
{
chainetmp[t] = destination[i];
t++;
i++;
}

strcpy (destination, chainetmp);
strcat(dosstmp, destination);
strcpy (destination, dosstmp);
------------------------------------------------------------------------------------------

(Si jai besoin d'un while ici c'est parce que je copie destination a partir du "i" caractere...)

Et voici le fonction complete:


------------------------------------------------------------------------------------------
char convDE(char *destination)
{
char dosstmp[1000] = "K:\SAVE\\Sauvegarde\";
char chainetmp[1000] = "";
int t=0, i=0;

while( i<=4 )

{
if(destination[i] != "'\'" && destination[i] != ':' && destination[i] != '\0')
{
chainetmp[t] = destination[i];
i++;
t++;
}

else if (destination[i] == "'\'")
{
chainetmp[t] = "'\'";
t++;
chainetmp[t] = "'\'";
t++;
i++;
}

if (destination[i] == ':')
{
chainetmp[t] = ' ';
i++;
}

}

while( destination[i] != '\0' )
{
chainetmp[t] = destination[i];
t++;
i++;
}

strcpy (destination, chainetmp);
strcat(dosstmp, destination);
strcpy (destination, dosstmp);

return(destination);

}
--------------------------------------------------------------------------------------------

Jai meme essayé de suprimer la partie de while a return et il me trouve une erreur sur
le "}" de la fin!

Jutilise l'IDE codeblocks, et je tourne ss windows
Merci du coup de main!

6 réponses

cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
31 juil. 2009 à 08:29
Salut,

Tes erreurs sont liées à la manipulation des types caractères :

char dosstmp[1000] = "K:\SAVE\\Sauvegarde\";
> char dosstmp[1000] "K:\\SAVE\\Sauvegarde\";


"'\'" => '\\'

Cordialement.
3
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009
31 juil. 2009 à 10:04
Laisse moi t'éclaircir la dessus :
quand on met un \, en C, c'est un caractère d'échapement qui modifie le caractere qui suit.

En tappant C:\P, tu vas enregistrer dans ton code la liste de caracteres suivants:

'C' , ':', '\P' (je ne sais pas du tout ce que va pondre \P)

Donc, tu DOIS duppliquer TOUT tes \ dans un chemin... sinon, ça ne marchera pas !

Alternativement, pourquoi ne pas mettre tes séparateur sous forme UNIX ? (C:/Progra.../ )

Et encore, je ne connais psa du tout la fonction CopyFile .. elle supporte les espaces dans les noms de fichiers ?




;I'm just keeping the hopeless cross to increase the meaninglessness
3
Noha819 Messages postés 74 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 19 octobre 2023
31 juil. 2009 à 09:39
En fait je nai peut etre pas tout précisé!
Le but de cette fonction et de convertir destination. On lui envoie sous forme "C:\Program file\\Astase\\Ted.jpg" par exemple, et elle a pour but de retourner "K:\SAVE\\Sauvegarde\\C\\Program file\\Astase\\Ted.jpg".

Plus précisément destination est une copie de char localisation et une fois ma chaine retournée dans le prog principal, je demande de copier le fichier localisation dans le dossier destination.
Jespere que le me suis bien explicé hem.
Au fait je met "C:" et non pas "C:\" pasce que j'utilise la fonction "CopyFile(file_in, file_out , TRUE);" et je nai réussi a la faire fonctionner que sous cette forme!!
Ouf je croi que j'ai tout dit dsl lucky92 pour le manque de détails!!!
0
Noha819 Messages postés 74 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 19 octobre 2023
31 juil. 2009 à 11:05
Merci pour ta reponse Kotomine!
Je suis daccord avec toi pour mettre deux '\' a chaque fois, mais je n'ais pas réussis a faire marcher copyfile jai galeré meme, et je nai réussis a copier un fichier qu'en mettant le chemin sous cette forme!(C'est a dire avec un separateur apres le disque et deux pour le reste). Peut etre my suisje mal pris?
Oui copyfile accepte les espaces. Jai essayé aussi avec les separateurs UNIX, sans succes... Ou peut etre y a til une autre facon de copier toute sorte de fichier?
Et aussi pour Lucky92 merci tu avai raison pour '\\' et non pas "'\'" car le compilateur n'en reconnais qu'un seul sur les deux comme le dit bien Kotomine!

Cependant le compilateur me pourris toujours sur la ligne "while( destination[i] != '\0' )" alors que bon, je ne vois pas ou est lerreur sur cette ligne!!
Je vais essayé en changeant tout mes "'\'"...
0

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

Posez votre question
Noha819 Messages postés 74 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 19 octobre 2023
31 juil. 2009 à 11:10
Ce que je ne comprend pas aussi, c'est que quand je créé un nouveau projet et que je met ma fonction en tant que main et que je déclare "destination".
Quand je compile il n'y a pas d'erreur et en plus (avec un printf) la chaine qui en sort est bien celle que je souhaite obtenir!

Alors que c le meme code a part le printf et le
char destination = "C:\machinmachin"
0
Noha819 Messages postés 74 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 19 octobre 2023
31 juil. 2009 à 11:30
Youhou! Merci a vous deux le probleme venais bien des \ !!!
Je ne sais pas comment je vais me servir de copyfile mais c'est un autre blem!!!
tcho!
0
Rejoignez-nous