> Tous les forumsAutres langages

 declaration de variable 'oui mais quoi)
Statut du sujet : NON RESOLU Imprimer
 Gandsoll
  Posté le 05/04/2004 @ 20:36  
 Petit astucien

137 Messages
Bonsoir les gens 1ere partie int copy(){ char nsource[100]; char ncopie[100]; int fsource,fcopie,fin; char x; FILE*source; FILE*copie; printf("Le fichier a copier doit etre dans le meme repertoire que ce programme\n\n"); printf("fichier a copier: "); scanf("%s",fsource); sprintf(nsource,"%s",fsource); source=fopen(nsource,"rb"); if(!source) {printf("le fichier n'existe pas"); exit(0);} printf("\n Nom de la copie: "); scanf("%s",fcopie); sprintf(ncopie,"%s",fcopie); copie=fopen(ncopie,"wb"); while(feof(source)==0){ x=getc(source); fputc(x,copie); } fclose(source); fclose(copie); printf("Copie Termine\n"); getch(); } """" voila un bout du code et visual me demande de declarer exit en tant que fonction je peu mettre quoi pour le satisafaire ???? """" seconde partie int main() { printf("\t\t1 -> Copie de fichiers\n\n"); printf("\t\t2 -> Suprimer fichier\n\n"); int choix=0; printf("Choix: "); scanf("%d",&choix); if (choix==1) copy(); if (choix==2) suppr(); if (choix!=1 && choix!=2) printf("Choix incorrect"); getch(); } il me di qu'il manque un void la : 'main' : function should return a value; 'void' return type assumed si je met main(void) ca sera good ? Bien le bonsoir
 Afficher le profil de GandsollEnvoyer un message privé à Gandsoll
 
 
Publicité
 koala01  Posté le 05/04/2004 à 23:10  
Astucien

4715 Messages
ouaip, la syntaxe void main(void) est la syntaxe habituellement utilisée en C (elle est obsolete dans C++) De meme, avoir int nom_de_fonction() signale que tu as affaire à une fonction et non à une procédure. La différence entre les deux est qu'une fonction doit renvoyer une valeur correspondant au terme qui précede le nom de la fonction (ici, il s'agit donc d'un entier simple "int") avec int nom_de_fonction() il faut donc la commande return un_entier pour qu'il soit content une procédure (fonction spéciale qui ne renvoie pas de variable) sera déclarée selon la syntaxe void nom_de_fonction() ou, s'il n'est pas content, void nom_de_fonction(void) pour signaler que la fonction n'a pas besoin de paramètres [clindoeil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 Gandsoll  Posté le 06/04/2004 à 20:28  
Petit astucien

137 Messages
mci bien pour la reponse a la deuxieme question ;) je men doutais mai de la a dire ue c'est obsolete pour la premeire question je le declare ou alors avec : int exit(0) avec un return un peu plus loin ??? ou je met a part un truc du style void exit(void) en vous remerciant
Afficher le profil de GandsollEnvoyer un message privé à Gandsoll
 Revenir en haut de la page
 koala01  Posté le 12/04/2004 à 02:24  
Astucien

4715 Messages
Il semblerait que le fichier d'entete <iostream.h> soit nécessaire à la fonction exit()... Ce fichier d'entete permet en outre l'utilisation de cin et de cout, qui sont beaucoup plus faciles d'utilisation que sprintf et scanf [clindoeil] En plus, il semblerait qu'il faille utiliser exit (-1) plutot que exit(0). Il ne faut par contre, une fois iostream inclus, plus déclarer la fonction exit, donc tu peux modifier simplement le code en if(!source) {printf("le fichier n'existe pas"); exit(-1);} Un dernier petit conseil... Je sais bien que sur ce forum ce n'est possible qu'en utilisant [ code] [ / code], mais tu as grandement intérêt à envisager une indentation correcte de ton code, et une déclaration de variables à concurence d'une par ligne de manière à pouvoir le relire plus facilement. En plus, il est très utile de mettre quelques commentaires, qui ne seront de toutes facon pas pris en compte au moment de la compilation (certains article préconnisent jusqu'à 1/3 commentaires, 2/3 code....) Concernant ton code, cela donnerait +- ceci: [code] int copy() { // déclaration des nom de fichier source et de fichier cible char nsource[100]; char ncopie[100]; int fsource; int fcopie; int fin; char x; FILE*source; FILE*copie; printf("Le fichier a copier doit etre dans le meme repertoire que ce programme\n\n"); printf("fichier a copier: "); scanf("%s",fsource); sprintf(nsource,"%s",fsource); source=fopen(nsource,"rb"); if(!source) { printf("le fichier n'existe pas"); exit(0); } printf("\n Nom de la copie: "); scanf("%s",fcopie); sprintf(ncopie,"%s",fcopie); copie=fopen(ncopie,"wb"); //effectue la copie du fichier while(feof(source)==0) { x=getc(source); fputc(x,copie); } fclose(source); fclose(copie); printf("Copie Termine\n"); getch(); } [/code] Sans oublier, bien sûr, que je me suis contenté de faire un copier/coller de ton code sans le corriger et que donc, cette fonction devrait renvoyer une valeur (ou, si tu veux que ce soit une procédure, remplacer le int de la première ligne par void) Avoues quand meme que c'est autrement plus lisible [clindoeil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 koala01  Posté le 12/04/2004 à 02:33  
Astucien

4715 Messages
Et par la même occasion, il serait pas mal de trouver une autre solution à tes char nsource[100]; char ncopie[100]; ... En effet, bien que tu aies compté fort large pour la longueur possible des noms de fichier, ton approche souffre, selon moi, de deux défauts majeurs: -Si on introduit un nom au format "DOS3 (8+3), on perd inutilement 89 octets mémoire par nom de fichier (meme si au prix actuel de la mémoire....) -si on essaie de mettre un nom 101 caractères ou plus, ton programme plantera en beauté ...ce qui est bien pire[clindoeil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page