J'essaie de créer un générateur / éditeur de caractères et je voulais faire une liste de tous les caractères déjà enregistrés apparaissent sur l'écran de la console.
J'ai réussi à obtenir la liste de travail, mais il y a un léger problème avec la sortie . P>
Choose character to edit: 1) some random name 2) another random name
3 Réponses :
Une nouvelle ligne termine la ligne actuelle et cela ne signifie pas que d'autres personnages suivront. Donc, vous obtenez le "vide" 3) code> car il n'y a plus de caractère à lire après la dernière nouvelle ligne.
Je voudrais donc introduire une variable qui indique si le compteur
% d) code> doit être imprimé dans l'exécution suivant em> (c'est-à-dire seulement si d'autres caractères suivent):
int beginOfNewLine = 1;
while((c=getc(f)) != EOF){
if (beginOfNewLine) {
printf("%d) ", ++i);
beginOfNewLine = 0;
   }
if(c=='\n'){
beginOfNewLine = 1; // trigger to print the counter in the next run
}
putchar(c);
}
Comment puis-je supprimer le dernier point pour qu'il [n'écrire pas une dernière ligne vide]? P>
bool emptyline = true; while ((c = getc(f)) != EOF) { if (emptyline) { printf("%d) ", ++i); emptyline = false; } putchar(c); if (c == '\n') emptyline = true; }
meilleur serait d'utiliser ce magnifique nom de caractère [50] de la tienne;) p>
Stockez le nom jusqu'à ce que vous trouviez le '\ N', puis l'afficher. De cette façon, vous pourrez vérifier les erreurs avant d'afficher l'index: D P>
Avez-vous pensé à boucler avec
fgets code> pour lire des lignes complètes dans le fichier au lieu de rechercher une nouvelle ligne?