Je suis un total C n00b essayant de m'enseigner C off K & R. Ma question est un peu embarrassant élémentaire. OK, voici: Je ne peux pas obtenir des programmes en utilisant getchar pour donner le type de sortie que je m'attendais. Si vous avez K & R en main, je suis coincé sur l'exercice 1.13. La question est: «Écris un programme pour imprimer un histogramme des longueurs de mots dans sa saisie» et je ne peux même pas m'attaquer à la version horizontale à cause de ce problème.Comment obtenir un programme utilisant getchar pour s'exécuter?
Je suis sur XP en utilisant Dev-C++ (compilateur mingW) et en exécutant des programmes à partir de la ligne de commande. Mon problème est, quand j'essaye d'exécuter mon programme, il m'attend pour entrer des caractères à balayer, mais quand j'ai fini d'entrer et d'appuyer sur Entrée, cela ne fait rien quoi que ce soit. Je m'attends à ce qu'il avance et imprime l'histogramme comme je m'y attendais. En réalité, cela ne semble même pas compter les longueurs de mots, car comme vous pouvez le voir dans le code, lorsque j'essaie d'imprimer ce qui se trouve dans le tableau ctr juste pour voir s'il contient quelque chose, rien ne s'imprime.
Je suis tellement n00b que je n'ai aucune idée si c'est mon code ou la ligne de commande qui est en faute. Mais je soupçonne que c'est quelque chose avec le système, parce que quand je tente de compiler et d'exécuter a model program, la même chose se produit. Tapez entrée, appuyez sur Entrée, rien ne se passe. Si je Ctrl-C, parfois il crache un astérisque ou deux qui ne ressemble à rien de la sortie du modèle. D'autres fois, il ne fait rien (retourne juste à l'invite).
Voici mon code pour l'exercice. J'ai passé toute une journée là-dessus et je remets en question ma capacité à poursuivre la programmation. J'apprécierais vraiment, vraiment si quelqu'un pourrait me sortir de ce trou!
En outre, j'ai une autre question sur le programme modèle que j'ai mentionné ci-dessus, mais je pense que je devrais le poster dans sa propre question. Merci à tous :)
#include <stdio.h>
//#define 1 IN
//#define 0 OUT
int main() {
//start w/ state = OUT
int c = 0;
// int state = OUT;
int len = 0;
int ctr[12];
int i, j;
i = j = 0;
for (i = 0; i <12; i++)
ctr[i] = 0;
while ((c = getchar()) != EOF)
if (c != ' ' && c != '\t' && c != '\n') {
// state = IN;
len++;
printf("%d", len);
}
else {
ctr[len]++;
len = 0;
}
for (i = 0; i <12; i++)
printf("%d\n", ctr[i]);
for (i = 0; i <12; i++) {
printf("%d\n", i);
for (j = 0; j <= ctr[i]; j++)
printf("-");
printf("\n");
}
return 0;
}
Rien à voir avec votre problème, mais envisagez d'abandonner DevC++. C'est buggé et n'est plus développé. Une bonne alternative aux logiciels libres est Code :: Blocks sur http://www.codeblocks.org. Mais comme je l'ai dit, cela n'a RIEN à voir avec votre problème - la commutation des IDE ne le résoudra pas. –
J'ai eu CB pendant un moment. Vous ne le croiriez pas, mais il est arrivé un moment où je ne savais tout simplement pas comment l'utiliser *: | Plus précisément, la fonctionnalité de débogage: après avoir cliqué sur un bouton gravement faux, il a cessé de me montrer la liste des erreurs dans mon code. Après quelques jours à fouiller dans la documentation, j'ai abandonné et je suis retourné au seul IDE que je connaissais: D –
Anita, désolée d'entendre ça. Avez-vous essayé de poser des questions sur votre problème à http://forums.codeblocks.org. Ou vous pourriez même essayer de poster une question ici sur SO. Franchement, tout doit être meilleur que DevC++. –