|
Dernière réponse | ||
---|---|---|
Sujet : [C] Elle est où mon erreur ??????? j'en ai marre ! | ||
zi_ril_wanou |
|
Aperçu |
---|
Vue Rapide de la discussion |
---|
zi_ril_wanou |
|
lordankou | ça s'améliore grandement mais il y a toujours un problème avec un saut de ligne ! la je cromprends pas du tout !
avec le fichier texte essaie.txt : (copier-coller) Brest Lerand Paris Ronaldo j'obtiens : (copier-coller). Brest possede le joueur Lerand Paris possede le joueur Ronaldo ---------------------------------------------------------------- #include <stdio.h> #include <string.h> #include <stdlib.h> void supprime_caractere(char *chaine,char *resultat) { char separateurs[17]={" &'(_$*!:;,.#{}|"}; char *traitement ; int parcours_boucle = 0 ; traitement = strtok(chaine, separateurs); while (traitement != NULL) { if (strcmp(traitement,"\0" ) != 0) { strcat(resultat, strcat(traitement," " )); traitement = strtok(NULL, separateurs) ; if (resultat[strlen (resultat) + 1]=='\n') resultat[strlen (resultat) + 1]='\0' ; } } //return resultat ; } int main() { FILE *fichier_entre ; FILE *fichier_sortie ; char choix[1]="\0" ; char chemin_entre[80]="\0"; char chemin_sortie[80]="\0" ; char nom_club[80]="\0"; char nom[80]="\0" ; char ligne_lu[80]="\0"; char ligne_traiter[80]="\0"; char preposition[20]=(" possede le joueur " ) ; char intermediaire[200]="\0"; int compteur_ligne=0 ; printf("Nom du fichier d'entree (avec chemin d'entree) : " ) ; gets(chemin_entre) ; while(!(fichier_entre=fopen(chemin_entre, "r" ))) { printf("\nLe fichier n'existe pas.\nContinuer O/N ?" ) ; gets(choix) ; if (choix =="O"|| "o" ) { printf("\nVeuillez entre un autre nom de fichier : " ) ; strset(chemin_entre,'\0'); /* on vide le chemin d'entree */ gets(chemin_entre) ; } else exit(1) ; } printf("Nom du fichier de sortie (avec chemin d'entree) : " ) ; gets(chemin_sortie) ; while(!(fichier_sortie=fopen(chemin_sortie, "w" ))) { printf("\nLe fichier existe deja.\nQuitter O/N ?" ) ; gets(choix) ; if (choix=="O"|| "o" ) { printf("\nVeuillez entre un autre nom de fichier :" ) ; strset(chemin_sortie,'\0'); gets(chemin_sortie) ; /* on vide le chemin de sortie */ } else exit(1) ; } while(!feof(fichier_entre)) { strset(ligne_lu,'\0'); strset(ligne_traiter,'\0') ; fgets(ligne_lu,80, fichier_entre); supprime_caractere(ligne_lu,ligne_traiter); if (strcmp(ligne_lu,"\n" ) == 0) { if ((compteur_ligne %2) ==0) { printf("\nNom du club absent, enregistrement ignore" ); fgets(ligne_lu,80,fichier_entre); } else printf("\nNom du joueur absent, enregistrement ignore" ) ; compteur_ligne++; } else { if ((compteur_ligne % 2)==0) { if (strlen(ligne_traiter)==1) { fgets(ligne_lu,80,fichier_entre) ; fputs("Enregistrement ignore : Le club ne peut posseder qu'un seul caractere.", fichier_sortie); } else strcpy(nom_club,ligne_traiter) ; } else { if (strlen(ligne_traiter) !=1) { strcat(nom_club, preposition) ; strcat(nom_club, ligne_traiter) ; fputs(nom_club, fichier_sortie) ; } else fputs("Enregistrement ignore : Le joueur ne peut posseder qu'un seul caractere.", fichier_sortie); } compteur_ligne++ ; } } fclose(fichier_entre) ; fclose(fichier_sortie) ; printf("Traitement termine" ); return 0; } |
Lord II | Un autre petite chose. Est tu vraiment sur que tu as besoin de deux variables pour la saisie des chemin. Je pense qu'une seule variable buffer[1000] ( un peu plus grose d'ailleurs) serait suffissant étant donné que c'est dexu variables ne se "rencontrent" jamais.
Je pense aussi que cela doit etre possible de supprimer la varibale choix et de la remplacer par le buffer cité précédemment. Attention également à la taille de nom_club qui est une peu petite si jamais on fait le total de ce que tu peux y mettre. Je te conseille egalement ici de passer par le buffer mais en conservant toutes les autres variable [jfdsdjhfuetppo]--Message édité par lord ii--[/jfdsdjhfuetppo] |
Lord II | Attention ta fonction en supprime pas les retours chariots qui sont présent dans la chaine retourné par fgets.
Une petite modification de la focntion est à prévoir surtout dans la définition de la chaine . PS : Rappel le caractère \0 représenet la fin de la chaine de caractère [jfdsdjhfuetppo]--Message édité par lord ii--[/jfdsdjhfuetppo] |
Lord II | J'ai trouvé et c'était facile, tout simplement tu oublie de vider le buffer ligne_traiter après chaque parcours de la boucle.
Un simple appel strset(ligne_traiter,'\0'); après compteur++ résoudra le probleme. EN fait ce qui se passe c'est que le buffer contient toujours là première chaine et ainsi de suite..... |
lordankou | ça compile et ça s'exécute en partie bien. mais bon le résultat est faux. J'ai un fichier essaie.txt qui contient :
Brest Lerand Paris Ronaldinio et je devrais obtenir Brest possede le joueur Leran Paris possede le joueur Ronaldinio or j'obtiens : Brest possede le joueur Brest Lerand Brest Lerand Paris possede le joueur Brest Lerand Paris Ronaldo Je me demande si ça viendra pas d'un problème d'un saut de ligne dans une chaîne de caractère. en plus quand on fait strcat(s1,s2) et si s1 possède un saut de ligne à la fin ça risque de déconner non ? --------------------------------------------------------------- #include <stdio.h> #include <string.h> #include <stdlib.h> void supprime_caractere(char *chaine,char *resultat) { char separateurs[]={" &'(_$*!:;,.#{}|\0\n"}; char *traitement ; traitement = strtok(chaine, separateurs); while (traitement != NULL) { if (strcmp(traitement,"\0" ) != 0) { strcat(resultat, strcat(traitement," " )); traitement = strtok(NULL, separateurs) ; } } //return resultat ; } int main() { FILE *fichier_entre ; FILE *fichier_sortie ; char choix[1]="\0" ; char chemin_entre[80]="\0"; char chemin_sortie[80]="\0" ; char nom_club[80]="\0"; char ligne_lu[80]="\0"; char ligne_traiter[80]="\0"; char preposition[20]=(" possede le joueur " ) ; char intermediaire[200]="\0"; int compteur_ligne=0 ; printf("Nom du fichier d'entree (avec chemin d'entree) : " ) ; gets(chemin_entre) ; while(!(fichier_entre=fopen(chemin_entre, "r" ))) { printf("\nLe fichier n'existe pas.\nContinuer O/N ?" ) ; gets(choix) ; if (choix =="O"|| "o" ) { printf("\nVeuillez entre un autre nom de fichier : " ) ; strset(chemin_entre,'\0'); /* on vide le chemin d'entree */ gets(chemin_entre) ; } else exit(1) ; } printf("Nom du fichier de sortie (avec chemin d'entree) : " ) ; gets(chemin_sortie) ; while(!(fichier_sortie=fopen(chemin_sortie, "w" ))) { printf("\nLe fichier existe deja.\nQuitter O/N ?" ) ; gets(choix) ; if (choix=="O"|| "o" ) { printf("\nVeuillez entre un autre nom de fichier :" ) ; strset(chemin_sortie,'\0'); gets(chemin_sortie) ; /* on vide le chemin de sortie */ } else exit(1) ; } while(!feof(fichier_entre)) { fgets(ligne_lu,80, fichier_entre); if (strcmp(ligne_lu,"\n" ) == 0) { if ((compteur_ligne %2) ==0) { printf("\nNom du club absent, enregistrement ignore" ); fgets(ligne_lu,80,fichier_entre); } else printf("\nNom du joueur absent, enregistrement ignore" ) ; compteur_ligne++; } else supprime_caractere(ligne_lu,ligne_traiter); if ((compteur_ligne % 2)==0) { if (strlen(ligne_traiter)==1) { fgets(ligne_lu,80,fichier_entre) ; fputs("Enregistrement ignore : Le club ne peut posseder qu'un seul caractere.", fichier_sortie); } else strcpy(nom_club,ligne_traiter) ; } else { if (strlen(ligne_traiter) !=1) { strcat(nom_club,preposition) ; strcat(nom_club, ligne_traiter); fputs(nom_club, fichier_sortie) ; } else fputs("Enregistrement ignore : Le joueur ne peut posseder qu'un seul caractere.", fichier_sortie); } compteur_ligne++ ; } fclose(fichier_entre) ; fclose(fichier_sortie) ; printf("Traitement termine" ); return 0; } |
lordankou | j'ai lu attentivement ce que vous avez dit et je crois bien que j'ais fait de très nombreuses erreurs de sens. Maintenant je comprends beaucoup mieux et je vais bien relire et refaire le prog. En tout cas merci pour tout !
au fait j'utilise cc sous unix pour compiler. (on m'a posé la question c pour ça). |
zi_ril_wanou | Ma solution est vraiment trop dégeu !!!
(Ca compile mais ça marche pô) Voilou plus propre : #include <stdio.h> #include <string.h> #include <stdlib.h> main() { FILE *fichier_entre ; FILE *fichier_sortie ; char choix ; char chemin_entre[80] ; char chemin_sortie[80] ; char nom_club[80] ; char ligne_lu[80] ; char *ligne_traiter; char preposition[19]=(" possede le joueur " ) ; char intermediaire[99] ; char club_et_joueur[179] ; int compteur_ligne=0 ; char *supprime_caractere(char chaine[80]) { char separateurs[20]={" &'(_$ù*!:;,.#{}|"}; char *traitement ; char *resultat; traitement = strtok(chaine, separateurs); resultat = (char *)calloc(80,sizeof(char)); resultat[0]='\000'; while (traitement != NULL) { if (traitement[0]!='\000') { resultat=strcat(resultat, strcat(traitement," " )); traitement = strtok(NULL, separateurs) ; } } return resultat ; } printf("\033[2J" ) ; scanf("Nom du fichier d'entree (avec chemin d'entree) : %s",chemin_entre) ; while((fichier_entre=fopen(chemin_entre, "r" ))==NULL) { scanf("\nLe fichier n'existe pas.\nContinuer O/N ? %c ",&choix) ; if (choix=='O' || choix=='o') { scanf("\nVeuillez entre un autre nom de fichier : %s",chemin_entre) ; } else exit ; } printf("\033[2J" ) ; scanf("Nom du fichier de sortie (avec chemin d'entree) : %s",chemin_sortie) ; while((fichier_sortie=fopen(chemin_sortie, "r" ))==NULL) { scanf("\nLe fichier existe deja.\nQuitter O/N ? %c",&choix) ; if (choix=='O' || choix =='o') { scanf("\nVeuillez entre un autre nom de fichier : %s",chemin_sortie) ; } else exit ; } while((fgets(ligne_lu,80, fichier_entre)) != NULL) { if (strcmp(ligne_lu,"\n" ) == 0) { if ((compteur_ligne %3) ==0) { printf("\nNom du club absent, enregistrement ignore" ); fgets(ligne_lu,80,fichier_entre); } else printf("\nNom du joueur absent, enregistrement ignore" ) ; compteur_ligne++; } else ligne_traiter= supprime_caractere(ligne_lu); { if ((compteur_ligne % 2)==0) { if (strlen(ligne_traiter)==1) { printf("\nUn nom de club avec un seul caractere ?\nT'as fume ou quoi ?\nEnregistrement ignore." ); fgets(ligne_lu,80,fichier_entre) ; } else strcpy(nom_club,ligne_traiter) ; } else { if (strlen(ligne_traiter) !=1) { strcpy(intermediaire,preposition); strcat(intermediaire,nom_club); strcpy(club_et_joueur,intermediaire); strcat(club_et_joueur,ligne_traiter); fputs(club_et_joueur, fichier_sortie) ; } else printf("\nUn nom de joueur avec un seul caractere ?\nTu t'es vu quand t'as bu ?\nEnregistrement ignore." ) ; } compteur_ligne++ ; } } printf("\033[2J" ) ; printf("Traitement termine" ); } |
Lord II | Voici ma version ( non indenté comme il faut et je n'ai pas vu non plus si le prog fait ce qui doit faire étant donné que je ne sais pas ce qu'il doit faire.
Le code #include <stdio.h> #include <string.h> #include <stdlib.h> void supprime_caractere(char *chaine,char *resultat) { char separateurs[]={" &'(_$ù*!:;,.#{}|"}; char *traitement ; traitement = strtok(chaine, separateurs); while (traitement != NULL) { if (strcmp(traitement,"" ) != 0) { strcat(resultat, strcat(traitement," " )); traitement = strtok(NULL, separateurs) ; } } //return resultat ; } int main() { FILE *fichier_entre ; FILE *fichier_sortie ; char chemin[1000]=""; char choix[1]="" ; char chemin_entre[80]=""; char chemin_sortie[80]="" ; char nom_club[80]=""; char ligne_lu[80]=""; char ligne_traiter[80]=""; char preposition[20]=(" possede le joueur " ) ; char intermediaire[1000]=""; int compteur_ligne=0 ; printf("\033[2J" ) ; printf("Nom du fichier d'entree (avec chemin d'entree) : " ) ; gets(chemin) ; while((fichier_entre=fopen(chemin_entre, "r" ))==NULL) { printf("\nLe fichier n'existe pas.\nContinuer O/N ?" ) ; gets(choix) ; if (choix=="O"||"o" ) { printf("\nVeuillez entre un autre nom de fichier : " ) ; strset(chemin_entre,'\0'); gets(chemin_entre) ; } else exit(1) ; } printf("\033[2J" ) ; printf("Nom du fichier de sortie (avec chemin d'entree) : " ) ; gets(chemin) ; while((fichier_sortie=fopen(chemin_sortie, "r" ))==NULL) { printf("\nLe fichier existe deja.\nQuitter O/N ?" ) ; gets(choix) ; if (choix=="O"||"o" ) { printf("\nVeuillez entre un autre nom de fichier :" ) ; strset(chemin_sortie,'\0'); gets(chemin_sortie) ; } else exit(1) ; } while( feof(fichier_entre) != EOF) { fgets(ligne_lu,80, fichier_entre); if (strcmp(ligne_lu,"\n" ) == 0) { if ((compteur_ligne %3) ==0) { printf("\nNom du club absent, enregistrement ignore" ); fgets(ligne_lu,80,fichier_entre); } else printf("\nNom du joueur absent, enregistrement ignore" ) ; compteur_ligne++; } else supprime_caractere(ligne_lu,ligne_traiter); { if ((compteur_ligne % 2)==0) { if (strlen(ligne_traiter)==1) { printf("\nUn nom de club avec un seul caractere ?\nT'as fume ou quoi ?\nEnregistrement ignore." ); fgets(ligne_lu,80,fichier_entre) ; } else strcpy(nom_club,ligne_traiter) ; } else { if (strlen(ligne_traiter) !=1) { strcat(intermediaire,preposition) ; strcat(intermediaire,nom_club); strcat(intermediaire, ligne_traiter) ; fputs(intermediaire, fichier_sortie) ; } else printf("\nUn nom de joueur avec un seul caractere ?\nTu t'es vu quand t'as bu ?\nEnregistrement ignore." ) ; } compteur_ligne++ ; } } printf("\033[2J" ) ; printf("Traitement termine" ); return 0; } [jfdsdjhfuetppo]--Message édité par lord ii--[/jfdsdjhfuetppo] |
zi_ril_wanou | Ayé !!!
#include <stdio.h> #include <string.h> #include <stdlib.h> main() { FILE *fichier_entre ; FILE *fichier_sortie ; char choix[1] ; char chemin_entre[80] ; char chemin_sortie[80] ; char nom_club[80] ; char ligne_lu[80] ; char *ligne_traiter; char preposition[19]=(" possede le joueur " ) ; char intermediaire[99] ; char club_et_joueur[179] ; int compteur_ligne=0 ; char *supprime_caractere(char chaine[80]) { char separateurs[20]={" &'(_$ù*!:;,.#{}|"}; char *traitement ; char *resultat; traitement = strtok(chaine, separateurs); resultat = (char *)calloc(80,sizeof(char)); resultat[0]='\000'; while (traitement != NULL) { if (traitement[0]!='\000') { resultat=strcat(resultat, strcat(traitement," " )); traitement = strtok(NULL, separateurs) ; } } return resultat ; } printf("\033[2J" ) ; printf("Nom du fichier d'entree (avec chemin d'entree) : " ) ; gets(chemin_entre) ; while((fichier_entre=fopen(chemin_entre, "r" ))==NULL) { printf("\nLe fichier n'existe pas.\nContinuer O/N ?" ) ; gets(choix) ; if (choix=="O"||"o" ) { printf("\nVeuillez entre un autre nom de fichier : " ) ; gets(chemin_entre) ; } else exit ; } printf("\033[2J" ) ; printf("Nom du fichier de sortie (avec chemin d'entree) : " ) ; gets(chemin_sortie) ; while((fichier_sortie=fopen(chemin_sortie, "r" ))==NULL) { printf("\nLe fichier existe deja.\nQuitter O/N ?" ) ; gets(choix) ; if (choix=="O"||"o" ) { printf("\nVeuillez entre un autre nom de fichier :" ) ; gets(chemin_sortie) ; } else exit ; } while((fgets(ligne_lu,80, fichier_entre)) != NULL) { if (strcmp(ligne_lu,"\n" ) == 0) { if ((compteur_ligne %3) ==0) { printf("\nNom du club absent, enregistrement ignore" ); fgets(ligne_lu,80,fichier_entre); } else printf("\nNom du joueur absent, enregistrement ignore" ) ; compteur_ligne++; } else ligne_traiter= supprime_caractere(ligne_lu); { if ((compteur_ligne % 2)==0) { if (strlen(ligne_traiter)==1) { printf("\nUn nom de club avec un seul caractere ?\nT'as fume ou quoi ?\nEnregistrement ignore." ); fgets(ligne_lu,80,fichier_entre) ; } else strcpy(nom_club,ligne_traiter) ; } else { if (strlen(ligne_traiter) !=1) { strcpy(intermediaire,preposition); strcat(intermediaire,nom_club); strcpy(club_et_joueur,intermediaire); strcat(club_et_joueur,ligne_traiter); fputs(club_et_joueur, fichier_sortie) ; } else printf("\nUn nom de joueur avec un seul caractere ?\nTu t'es vu quand t'as bu ?\nEnregistrement ignore." ) ; } compteur_ligne++ ; } } printf("\033[2J" ) ; printf("Traitement termine" ); } |
Lord II | Bon moi je n'ai plus que des warnings donc j'ai fini.
Je te conseille de bien lire la doc de chaque fonction car (par ex) strcat renvoie un pointeur sur la chaine dest et prend deux parametres definition de strcat: char *strcat( char *strDestination, const char *strSource ); donc, la valeur de retour tu t'en fous puisque c'est deja le premier parametres concatené avec le deuxieme. Donc cette sequence : intermediaire = strcat(nom_club, preposition) ; club_et_joueur = strcat(intermediaire, ligne_traiter) ; fputs(club_et_joueur, fichier_sortie) ; devient : strcat(intermediaire,preposition) ; strcat(intermediaire,nom_club); strcat(intermediaire, ligne_traiter) ; fputs(intermediaire, fichier_sortie) ; Voilà avec toutes ces pistes tu devrais arriver à t'en sortir |
Lord II |
|
Lord II | Ensuite dans la fonction supprime_caractères, la declarion de separateur n'est pas valide, c'est :
char separateurs[]={" &'(_$ù*!:;,.#{}|"}; Une autre chose, en c/c++ il faut declarer toutes les variables sinon ca ne marche pas, par ex : char chemin[1000]; gets(chemin); Si tu veux mettre une chaine de caractères en tant que chaine vide je te conseille strset(chaine,'\0'); c'est mieux et ca marche contrairement à chaine=""; |
zi_ril_wanou | Houlà !!!
Y'a du boulot !!! Tu confonds chaines de caractères et pointeurs de caractères !!! Tu compares un pointeur avec une chaîne (if (traitement!="" ) !!!), etc... Bon, j'ai déjà bien réduit le nombre d'erreurs, mais une question : ligne je sais pas combien tu fait fgets(chemin)... moui, mais tu n'as pas défini "chemin". A quelle chaîne voulais tu faire référence ??? |
Lord II | Encore une chose, la focntion exit prend un parametre et en plus tu as la definition du tableau preposition qui se finit par ":" et je crois que les parenthèses ne sont pas obligatoires [jfdsdjhfuetppo]--Message édité par lord ii--[/jfdsdjhfuetppo] |
Lord II | Bon petite chose, pourquoi definir la fonction dans le corps du main ( pour moi c'est pas clair). En plus une fonction ne peut renvoyer un tableau, pour cela il faut passer par les pointeurs. [jfdsdjhfuetppo]--Message édité par lord ii--[/jfdsdjhfuetppo] |
Lord II | Petite Quetsion, tu compiles avec quoi car moi j'ai compilé avec VC++ et je n'ai pas autant d'erreur et surtout pas les memes |
lordankou | bon j'ai corriger char [19] en mettant char [20] mais bon tjrs autant d'erreur |
deepcore | damned, j'ai rien dit. |
deepcore | Tu pourais déjà dire ce qui déconne en gros, ça éviterait de partir en aveugle. Déjà, char choix[1] c'est quoi l'utilité ? ensuite méfies toi, dans un char[19] on ne peut mettre que 18 caractères. |
lordankou | voilà les erreurs : ". cc: "concact.c", line 39: error 1000: Unexpected symbol: "Nom du fichier d'entree (avec chemin d'entree) : ". cc: "concact.c", line 41: error 1000: Unexpected symbol: "while". cc: "concact.c", line 41: error 1000: Unexpected symbol: "=". cc: "concact.c", line 41: error 1000: Unexpected symbol: " )". cc: "concact.c", line 41: error 1000: Unexpected symbol: " )". cc: "concact.c", line 43: error 1000: Unexpected symbol: ";". cc: "concact.c", line 38: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 39: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 40: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 40: error 1584: Inconsistent type declaration: "gets". cc: "concact.c", line 45: error 1000: Unexpected symbol: "if". cc: "concact.c", line 45: error 1000: Unexpected symbol: "==". cc: "concact.c", line 46: error 1000: Unexpected symbol: "{". cc: "concact.c", line 47: error 1000: Unexpected symbol: ";". cc: "concact.c", line 44: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 44: error 1584: Inconsistent type declaration: "gets". cc: "concact.c", line 50: error 1000: Unexpected symbol: "}". cc: "concact.c", line 53: error 1000: Unexpected symbol: "}". cc: "concact.c", line 55: error 1000: Unexpected symbol: ";". cc: "concact.c", line 56: error 1000: Unexpected symbol: ";". cc: "concact.c", line 48: warning 502: Initializer for int type is string. cc: "concact.c", line 49: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 49: error 1584: Inconsistent type declaration: "gets". cc: "concact.c", line 52: error 1573: Type of "exit" is undefined due to an illegal declaration. cc: "concact.c", line 52: error 1584: Inconsistent type declaration: "exit". cc: "concact.c", line 58: error 1000: Unexpected symbol: "while". cc: "concact.c", line 58: error 1000: Unexpected symbol: "=". cc: "concact.c", line 58: error 1000: Unexpected symbol: " )". cc: "concact.c", line 58: error 1000: Unexpected symbol: " )". cc: "concact.c", line 60: error 1000: Unexpected symbol: ";". cc: "concact.c", line 57: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 57: error 1584: Inconsistent type declaration: "gets". cc: "concact.c", line 62: error 1000: Unexpected symbol: "if". cc: "concact.c", line 62: error 1000: Unexpected symbol: "==". cc: "concact.c", line 63: error 1000: Unexpected symbol: "{". cc: "concact.c", line 64: error 1000: Unexpected symbol: ";". cc: "concact.c", line 61: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 61: error 1584: Inconsistent type declaration: "gets". cc: "concact.c", line 67: error 1000: Unexpected symbol: "}". cc: "concact.c", line 70: error 1000: Unexpected symbol: "}". cc: "concact.c", line 73: error 1000: Unexpected symbol: "80". cc: "concact.c", line 73: error 1000: Unexpected symbol: "!=". cc: "concact.c", line 79: error 1000: Unexpected symbol: ";". cc: "concact.c", line 80: error 1000: Unexpected symbol: ";". cc: "concact.c", line 65: warning 502: Initializer for int type is string. cc: "concact.c", line 66: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 66: error 1584: Inconsistent type declaration: "gets". cc: "concact.c", line 69: error 1573: Type of "exit" is undefined due to an illegal declaration. cc: "concact.c", line 69: warning 525: Redeclaration of identifier "exit". cc: "concact.c", line 73: error 1584: Inconsistent type declaration: "fgets". cc: "concact.c", line 77: error 1588: "compteur_ligne" undefined. cc: "concact.c", line 77: error 1563: Expression in if must be scalar. cc: "concact.c", line 84: error 1560: Modifiable lvalue required with operator "++". ". cc: "concact.c", line 115: error 1000: Unexpected symbol: "Traitement termine". cc: "concact.c", line 116: error 1000: Unexpected symbol: "}". cc: "concact.c", line 114: error 1506: Parameters allowed in function definition only. cc: "concact.c", line 115: error 1506: Parameters allowed in function definition only. kartxila_$ cc: "concact.c", line 39: error 1000: Unexpected symbol: "Nom du fichier d'entree (avec chemin d'entree) : ". bash: cc:: command not found kartxila_$ cc: "concact.c", line 41: error 1000: Unexpected symbol: "while". cc: "concact.c", line 38: error 15bash: cc:: command not found kartxila_$ cc: "concact.c", line 41: error 1000: Unexpected symbol: "=". bash: cc:: command not found kartxila_$ cc: "concact.c", line 41: error 1000: Unexpected symbol: " )". bash: cc:: command not found kartxila_$ cc: "concact.c", line 41: error 1000: Unexpected symbol: " )". bash: cc:: command not found kartxila_$ cc: "concact.c", line 43: error 1000: Unexpected symbol: ";". bash: cc:: command not found kartxila_$ cc: "concact.c", line 38: error 15 |
lordankou | Elle est ou mon erreur ??? je cherche mais là je comprends vraiment pas ! #include <stdio.h> #include <string.h> #include <stdlib.h> main() { FILE *fichier_entre ; FILE *fichier_sortie ; char choix[1] ; char chemin_entre[80] ; char chemin_sortie[80] ; char nom_club[80] ; char ligne_lu[80] ; char preposition[19]=(" possede le joueur " ) : char intermediaire[99] ; char club_et_joeur[179] ; int compteur_ligne=0 ; char[80] supprime_caractere(char chaine[80]) { char separateurs={" &'(_$ù*!:;,.#{}|"}; char traitement[80] ; char resultat[80]="" ; traitement = strtok(chaine, separateurs); while (traitement != NULL) { if (traitement != "" ) { resultat=strcat(resultat, strcat(traitement," " )); traitement = strtok(NULL, separateurs) ; } } return resultat ; } printf("\033[2J" ) ; printf("Nom du fichier d'entree (avec chemin d'entree) : " ) ; gets(chemin) ; while((fichier_entre=fopen(chemin_entre, "r" ))==NULL) { printf("\nLe fichier n'existe pas.\nContinuer O/N ?" ) ; gets(choix) ; if (choix=="O"||"o" ) { printf("\nVeuillez entre un autre nom de fichier : " ) ; chemin_entre="" ; gets(chemin_entre) ; } else exit ; } printf("\033[2J" ) ; printf("Nom du fichier de sortie (avec chemin d'entree) : " ) ; gets(chemin) ; while((fichier_sortie=fopen(chemin_sortie, "r" ))==NULL) { printf("\nLe fichier existe deja.\nQuitter O/N ?" ) ; gets(choix) ; if (choix=="O"||"o" ) { printf("\nVeuillez entre un autre nom de fichier :" ) ; chemin_sortie="" ; gets(chemin_sortie) ; } else exit ; } while((fgets(ligne_lu,80, fichier_entre)) != EOF) { if (strcmp(ligne_lu,"\n" ) == 0) { if ((compteur_ligne %3) ==0) { printf("\nNom du club absent, enregistrement ignore" ); fgets(ligne_ly,80,fichier_entre); } else printf("\nNom du joueur absent, enregistrement ignore" ) ; compteur_ligne++; } else ligne_traiter= supprime_caractere(ligne_lu); { if ((compteur_ligne % 2)==0) { if (strlen(ligne_traiter)==1) { printf("\nUn nom de club avec un seul caractere ?\nT'as fume ou quoi ?\nEnregistrement ignore." ); fgets(ligne_lu,80,fichier_entre) ; } else nom_club = ligne_traiter ; } else { if (strlen(ligne_traiter) !=1) { intermediaire = strcat(nom_club, preposition) ; club_et_joueur = strcat(intermediaire, ligne_traiter) ; fputs(club_et_joueur, fichier_sortie) ; } else printf("\nUn nom de joueur avec un seul caractere ?\nTu t'es vu quand t'as bu ?\nEnregistrement ignore." ) ; } compteur_ligne++ ; } } printf("\033[2J" ) ; printf("Traitement termine" ); } |