9
votes

Compteur de caractère de "le langage de programmation C" ne fonctionne pas comme prévu

Je lise à travers "le langage de programmation C" et je travaille à travers tous les exercices avec codeblocks. Mais je ne peux pas obtenir mon comptoir de caractère pour travailler, malgré la copie directement du livre. Le code ressemble à ceci: xxx

Lorsque j'exécute le programme, il ouvre une fenêtre que je peux taper, mais quand je frappe entrez, tout ce qui se passe est-il sur une ligne et je peux garder Taper, mais je pense que c'est censé imprimer le nombre de caractères.

aucune idée de ce qui ne va pas?


0 commentaires

5 Réponses :


9
votes

Cette ligne: xxx

signifie qu'il continue à lire jusqu'à la fin de l'entrée - pas jusqu'à la fin d'une ligne. ( EOF est une signification constante spéciale "Fin du fichier".) Vous devez mettre fin à l'entrée (probablement avec Ctrl-D ou avec Ctrl-Z) pour voir le nombre total de caractères saisi. < / p>


0 commentaires

2
votes

Entrée n'est pas EOF. Selon votre système d'exploitation, CTRL-D ou CTRL-Z devraient agir comme EOF sur l'entrée standard.


2 commentaires

D'accord, cela a du sens. Mais Ctrl-D et Ctrl-Z ne fonctionnent pas tous les deux. Ils tapent respectivement ^ d et ^ z respectivement. Tout ce qui pourrait être, ou quelque part pour découvrir ce qu'il est?


@ user1624005: Vous devrez peut-être taper Ctrl-Z suivi de Entrée.



3
votes

Si vous souhaitez terminer sur EOL (fin de ligne), remplacez EOF avec '\ N':

#include <stdio.h>

main(){
    long nc;

    nc = 0;

    while (getchar() != '\n')
        ++nc;
    printf("%ld\n", nc);
}


0 commentaires

0
votes

J'ai couru dans le problème ce soir aussi. Enfin découvert que Ctrl-D sur Linux a travaillé. Vous construisez le fichier source à l'aide de CC et lancez le programme et entrez un mot, puis appuyez deux fois sur CTRL-D lorsque vous avez terminé la frappe. Le nombre que le programme a compensé sera imprimé juste derrière le mot même que vous venez de taper, et le programme se termine immédiatement. Tout comme ceci:  Entrez la description de l'image ici


0 commentaires

0
votes

La réponse ci-dessus fournie par Nujabse est correcte. Mais récemment sur la question de ce sujet et de rechercher la réponse, je voudrais ajouter pourquoi.

Utilisation CTRL + C indique au terminal d'envoyer un SIGINT au processus de premier plan actuel, qui se traduit par par défaut pour terminer l'application.

Ctrl + D indique au terminal qu'il doit enregistrer une EOF sur une entrée standard, que Bash interprète comme désir de sortir.

Quelle est la différence entre ^ C et ^ d


0 commentaires