-1
votes

C erreur de sortie de boucle (le contrôle peut atteindre la fin de la fonction non vide)

J'ai le code suivant dans Python et je tiens à le traduire en C: XXX

My for Loop ne fait rien. Pourquoi? Jusqu'à présent, j'ai: xxx


10 commentaires

Vous n'appelez pas Func .


Avez-vous oublié d'appeler Func ?


De plus, votre boucle interne devrait aller jusqu'à j pas n .


printf ("% i \ n", i); devrait être printf ("% d \ n", i);


Est get_int fourni pour vous? Ce n'est pas une fonction standard. Sinon, scanf serait utile


Ce code est probablement une bonne affaire plus compliquée qu'elle ne doit être. Vous pouvez obtenir votre n avec Printf et Scanf. Func semble ok, mais pourquoi retournez-vous un imprimeur là-bas?


La boucle interne de Func retourne inconditionnellement de la fonction, de sorte que ce n'est pas une grande boucle.


@ikegami i et d sont synonymes comme spécifiant de conversion. Il y a un CS50.h qui fournit probablement get_int.


@Aprogrammer, je ne savais pas ça. Mais mon commentaire se tient ... % d est presque universellement utilisé, donc % d est beaucoup plus lisible que % i . /// Ça pourrait. Ce n'est peut-être pas. C'est pourquoi j'ai demandé.


Il existe également un échange de pile séparé pour CS50 - cs50.stackexchange.com


3 Réponses :


0
votes
  1. vous n'appelez pas func . Je pense que cela est facilement compréhensible.
  2. Pourquoi déclarez-vous FUNC () avec Char Type de retour? Il ne faut rien retourner.
  3. ne ne renvoie pas n'importe quoi. ne ne renvoie pas le printf . Pourquoi voudriez-vous faire cela? Vous voulez seulement imprimer les caractères. retour quitte immédiatement la fonction.

0 commentaires

2
votes

Vous n'avez jamais appelé Func , donc bien sûr ça ne fait rien. L'erreur dans votre titre de question "Le contrôle peut atteindre la fin de la fonction non vide)" est parce que vous avez déclaré Func pour retourner char , mais la mise en œuvre ne retourner n'importe quoi si n est inférieur ou égal à 0 (la boucle se termine immédiatement).

Le retour Vous avez le sens in Tout événement, puisque la valeur de retour de printf n'est pas vraiment pertinente ici. Et il imprime le même nombre de panneaux de livre ( # ) sur chaque ligne, pas un nombre croissant. Je soupçonne que vous voulez quelque chose comme (changements notés avec des commentaires inline): xxx


0 commentaires

0
votes
  1. Vous devriez Inclure string.h et stdlib.h
  2. Vous utilisez un type de données non valide pour la chaîne. Vous devez utiliser (Const Char * Invite [])
  3. tandis que (n> 8 || n <1) indique à la boucle de stocker des chiffres en dehors de la plage spécifiée, pas à l'intérieur. Il devrait être tandis que (n <= 8 && n> = 1) Si vous voulez que ce soit inclusif, sinon vous pouvez omettre l'opérateur = .
  4. Le code Python ne fonctionne pas vraiment non plus. Quel est le but de cela pour la boucle? Quelle est la sortie souhaitée?

1 commentaires

En effet à 4. J'ai oublié une plage in int '(0, int (n))' car l'entrée donne une chaîne non pas un int. Le code devrait faire une pyramide très basique