IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Editeur de texte en c


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut Editeur de texte en c
    Bonjour à tous

    Je dois créer un éditeur de texte en C (oui tordu je sais.) Les consignes sont les suivantes :
    80 caractères au maximum par ligne
    20 lignes au maximum
    Commencer par inviter l'utilisateur à charger un fichier.

    Ensuite on appelle un menu :
    • saisie d’un nouveau texte → E
    • affichage d’une ligne → a num
    • affichage du texte → A
    • affichage du texte avec numero de ligne → N
    • suppression d’une ligne → d num
    • insertion en fin de texte → I
    • insertion avant une ligne → i num
    • modification d’une ligne → m ligne
    • affichage de toutes les lignes (avec leur numero) contenant un mot → f mot
    • remplacement dans tout le texte d’un mot par un autre → s ancien nouveau
    • enregistrer → S
    • quitter → Q

    Et enfin l'utilisateur fait sa modification sur la 22ème ligne.
    La lecture du texte fonctionne correctement.
    Je ne comprends pas pourquoi mes autres fonctions coincent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h> 
     
    char text[20][80];
     
    int main()
    {
    	int i=0, num; 
    	char c[80];
    	char e;
    	char car;
    	char temp[80];
    	FILE *g;
     
    	do {
    	printf("Entrer le nom de fichier a editer :\n");
    	fgets(c, sizeof(c), stdin); 
    	c[strlen(c)-1] = 0;
    	g = fopen(c, "r");
     
    	if(g == NULL) 
    	{
    		printf("Erreur le fichier n'existe pas\n");
    	}
    	} 
    	while(g == NULL) ;
     
    	while(fgets (text[i], 80, g) !=NULL)
    		i++;
     
    	fclose(g);
    	system("clear");  
     
            printf("Que voulez-vous faire ? : ");
            scanf(" %c", &e);
            sscanf(temp, "%d", &num);
            switch(e)
                 {
                      case 'A': /*Affichage du texte*/
                      for(i=0; i<20; i++) 
                      printf("%s", text[i]);
                      break;
     
                      case 'm': /*Modification d'une ligne*/
                      fgets(temp, sizeof(temp), stdin); 
                      printf ("Quelle ligne ? ");
                      sscanf(temp, "%d", &num);
    		        	   fgets(text[num],80,stdin);
                      break;
     
                      case 'd': /*Suppression d'une ligne*/
                      printf ("Quelle ligne ? ");
                      sscanf(temp, "%d", &num);
                      fgets(temp, sizeof(temp), stdin); 
                      for(i=18; i<num; i++)
    			         strcpy(text[i], text[i+1]);
                      break;
     
                      case 'i': /*Insertion avant une ligne*/
                      printf ("Quelle ligne ? ");
                      sscanf(temp, "%d", &num);
                      fgets(temp, sizeof(temp), stdin); 
    		        	   for(i=19; i>num; i--)
    			         strcpy(text[i], text[i-1]);
                      break;
     
                      case 'B': /*Sauver les modifications*/
                      break;
     
                      case 'a': /*Affichage d'une ligne*/
                      break;
     
                      case 'N': /*Affichage du texte avec les numéros de ligne*/
                      break;
     
                      case 's': /*Remplacement dans tous le texte d'un mot par un autre*/
                      break;
     
                      case 'I': /*Insertion en fin de texte*/
                      break;
     
                      case 'f': /*Affichage de toutes les lignes contenant un mot*/
                      break;
     
                      default:
                      printf("Erreur ce choix ne fait pas partie de ceux proposes \n");
                      break;
             } 
     
      printf ("Autre chose a faire ? ");
      scanf (" %c", &car);
      while ((car != 'o')&&(car != 'n'))
        {
      printf ("Repondez par o ou n!\n Autre chose a faire ? (o/n) ");
      scanf (" %c", &car);
        }
      while (car == 'o')
        {
        	  printf("Que voulez-vous faire ? : ");
            scanf(" %c", &e);
            switch(e)
                {
                      case 'A': /*Affichage du texte*/
                      for(i=0; i<20; i++) 
                      printf("%s", text[i]);
                      break;
     
                      case 'm': /*Modification d'une ligne*/
                      fgets(temp, sizeof(temp), stdin); 
                      printf ("Quelle ligne ? ");
                      sscanf(temp, "%d", &num);
    		        	   fgets(text[num],80,stdin);
                      break;
     
                      case 'd': /*Suppression d'une ligne*/
                      printf ("Quelle ligne ? ");
                      sscanf(temp, "%d", &num);
                      fgets(temp, sizeof(temp), stdin); 
                      for(i=18; i<num; i++)
    			         strcpy(text[i], text[i+1]);
                      break;
     
                      case 'i': /*Insertion avant une ligne*/
                      printf ("Quelle ligne ? ");
                      sscanf(temp, "%d", &num);
                      fgets(temp, sizeof(temp), stdin); 
    		        	   for(i=19; i>num; i--)
    			         strcpy(text[i], text[i-1]);
                      break;
     
                      case 'B': /*Sauver les modifications*/
                      break;
     
                      case 'a': /*Affichage d'une ligne*/
                      break;
     
                      case 'N': /*Affichage du texte avec les numéros de ligne*/
                      break;
     
                      case 's': /*Remplacement dans tous le texte d'un mot par un autre*/
                      break;
     
                      case 'I': /*Insertion en fin de texte*/
                      break;
     
                      case 'f': /*Affichage de toutes les lignes contenant un mot*/
                      break;
     
                      default:
                      printf("Erreur ce choix ne fait pas partie de ceux proposes \n");
                      break;
             } 
      printf ("Autre chose a faire ? ");
      scanf (" %c", &car);
        }
      if (car == 'n')
        {
          return 0;
        }
     
      return 0;
    }
    Enfin avez-vous une idée de la façon dont je pourrais implanter la sauvegarde ?

    Je vous remercie pour votre aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    Bonjour,

    Le code me semble bizarre, car je vois deux fois la même boucle de traitement des entrées (le switch(e)) ... Du coup, comme je doute du problème, je vous conseille de lire la FAQ C, notamment la partie http://c.developpez.com/faq/?page=clavier_ecran
    Sinon ... le principe de tout mettre dans le même est complètement foireux. Je vous conseille de rapidement opter pour des fonction (genre, comme dans le cas de la question, une fonction de sauvegarde), et puis, prochainement, un projet sur plusieurs fichiers.

    Pour la sauvegarde, bah je pensais que cela aller être une simple écriture du contenu de ce qui a été rentré dans l'éditeur dans un fichier. Mais il semble que non.
    Ce que vous pouvez faire, c'est d'avoir l'intégralité du fichier en mémoire (un tableau de char, ou encore, un tableau d'un tableau de char (soit un tableau de ligne)). Après, il faudra juste le parcourir, et mettre les caractères lu dans un fichier (fichier que l'on demandera le nom à l'utilisateur).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mr. White Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int main()
    {
        ....
        if (car == 'n')
        {
          return 0;
        }
     
      return 0;
    }
    Ca on sent que c'est du code recherché...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Composant] Editeur de texte java
    Par doudine dans le forum Général Java
    Réponses: 17
    Dernier message: 27/01/2010, 17h35
  2. Editeur de texte enrichi
    Par Bidouille dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2004, 02h25
  3. [Composant] Editeur de texte
    Par fendavid dans le forum Général Java
    Réponses: 1
    Dernier message: 05/06/2004, 23h28
  4. [Kylix] [Kylix 3] Un editeur de texte ?
    Par drfreuderick dans le forum EDI
    Réponses: 2
    Dernier message: 14/03/2004, 01h33
  5. Quel EDI/editeur de texte preférez-vous ?
    Par Gandalf dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 18/09/2003, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo