Je suis encore nouveau dans la programmation et très très nouveau dans la programmation C, alors pardonnez-moi si ma question semble ridicule.
J'apprends les fonctions et les appels de fonction et j'essaye de suivre ce que l'instructeur fait mais avec un petit ajout. L'instructeur a fait ce qui suit:
J'essaye de:
Le C (c99) que j'utilise a une bibliothèque cs50.h (du cours en ligne cs50), qui fournit un code pour obtenir une entrée entière. Après avoir cherché et essayé, j'ai réussi comme ci-dessous:
Après avoir inclus la bibliothèque cs50 int N = get_int ("Combien de toux") toux (N)
Et aussi toux (get_int ("Combien de toux"))
Je me demande seulement pourquoi je ne peux pas utiliser avec succès le code ci-dessous en C sans obtenir une erreur. Pourquoi N ne peut-il pas être généré à partir de la fonction?
L'erreur que j'ai obtenue est --- l'utilisation de l'identifiant non déclaré 'N'
void cough(int N); int main(void) { cough(N); } void cough(int N) { N = get_int("How many coughs?\n"); for (int i = 0; i < N; i++) { printf("cough\n"); } }
Merci pour lire la longue histoire et fournir des conseils.
4 Réponses :
Vous pouvez essayer ceci, mais je n'ai pas utilisé get_int()
void cough(int N); int main(void) { int N = 0; scanf( "%d", &N ); cough(N); } void cough(int N) { printf("How many coughs?\n"); for (int i = 0; i < N; i++) { printf("cough\n"); } }
Merci beaucoup d'avoir pris le temps d'expliquer.
Lorsque vous écrivez un programme en C, vous ne pouvez que les identifiants qui ont été définis précédemment ... ou, bien sûr, lorsque vous les définissez.
Alors travaillons avec votre code ligne par ligne
#include <stdio.h> #include "cs50.h" int cough(void); int main(void) { cough(); } void cough(void) { int N = get_int("How many coughs?\n"); for (int i = 0; i < N; i++) { printf("cough\n"); } }
void
déjà défini: un mot-clé de langue
toux
elle est (provisoirement) définie ici
int
déjà défini: un mot-clé de langue
N
il est (provisoirement) défini ici. Cette définition est valide jusqu'à la prochaine parenthèse fermée car c'est une définition de paramètre
cough(N);
main
est en cours de définition ici
int main(void) {
Wow, merci beaucoup pour le guide étape par étape. Bruno a beaucoup aidé avec sa réponse et son guide et vous m'avez aidé à mieux comprendre avec l'explication du compilateur. J'apprécie vraiment le temps que j'ai pris pour m'aider à comprendre le concept.
Heureux d'avoir pu aider. Bon codage!
Je me demande seulement pourquoi je ne parviens pas à utiliser avec succès le code ci-dessous en C sans obtenir une erreur.
utilisation de l'identifiant non déclaré 'N'
car dans
void cough(int N); int main(void) { cough(get_int("How many coughs?\n")); return 0; } void cough(int N) { for (int i = 0; i < N; i++) { printf("cough\n"); } }N n'est pas défini dans main comme une variable locale, et ce n'est pas un variable globale aussi, donc vous ne pouvez pas compiler votre code
mais devrait être obtenu lorsque le programme démarre avec une invite, par exemple "Combien de toux?"
so
N = get_int("How many coughs?\n");doit être déplacé dans main
Enfin, vous voulez quelque chose comme ça:
int main(void) { cough(N); }Notez votre
printf
imprime une chaîne constante, vous pouvez donc la remplacer parmet ("cough");
qui est un peu plus rapide carprintf
recherche ' % 'pour rien dans ce cas
Merci beaucoup d'avoir pris le temps d'expliquer avec des détails et un guide d'aide. J'apprécie également la perspicacité supplémentaire sur l'utilisation de met au lieu de printf, je l'ai vu avec scanf et je me suis souvent demandé quoi utiliser, je commencerai à utiliser des put à partir de maintenant chaque fois que je dois imprimer une constante.
Vous devez définir Vous pouvez également utiliser N
dans main
(qui, d'ailleurs, est totalement indépendant de N
dans toux code>. Par exemple:
int main(void)
{
int N = 5;
cough(N);
{
cough (5)
ou définir N
comme étant global.