CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

À propos du C

realmyop
realmyop
Niveau 8
23 novembre 2010 à 13:49:11

Bonjour ! :)

J'étudie actuellement le C, et je sais déjà ce qu'est une fonction, et tout ça. Mais une question me torture l'esprit à devenir fou :fou:
Non je plaisante, pas à ce point là, mais en fait je me demande... pourquoi la fonction main est elle de type "int" ?

Merci :-)

Master_necrid2
Master_necrid2
Niveau 9
23 novembre 2010 à 14:09:01

Bonjour,

En gros, quand ton programme termine son exécution (donc quand la dernière instruction du main est exécutée), il renvoit un code de retour qui indique si tout s'est bien déroulé (d'où la ligne return EXIT_SUCCES dans ton main).

realmyop
realmyop
Niveau 8
23 novembre 2010 à 23:18:23

Ah oui ok merci ! :)

realmyop
realmyop
Niveau 8
25 novembre 2010 à 20:36:06

Rebonjour, c'est encore moi :)
Pourquoi la fonction main a-t-elle ces paramètres ? =>

int main(int argc, char *argv[])

Je ne vois pas de variable argc ou de tableau argv ?

Merci !

Ti-samu
Ti-samu
Niveau 10
25 novembre 2010 à 21:06:44

C'est ses paramètres de bases, si tu as déjà passé l'étape de la création de fonction appelé par un prototype, tu sait qu'une fonction prend en compte certains paramètres, et bien la fonction main a des paramètres de bases pris dans les bibliothèques incluse (stdio...) :oui:

Ils ne sont pas indispensables, mais conseillés, pour les tests de renvoie d’erreur sur les grosses fonctions main :ok:

T'en ai où dans ton apprentissage ? :(

realmyop
realmyop
Niveau 8
25 novembre 2010 à 21:32:41

Ah oui ok merci :)
En fait, j'étudie sur le site du zéro en attendant pour ensuite étudier avec un livre plus poussé, et je viens juste de finir le chapitre sur les chaînes de caractères.
J'ai vu vaguement qu'il y avait des tests de renvoie d'erreurs, mais je n'ai pas encore abordé ce chapitre.

Ti-samu
Ti-samu
Niveau 10
26 novembre 2010 à 08:08:48

Ah oui, ce tutoriel est très bon, continue sur celui ci, surtout soit très attentif au chapitre des pointeurs, si tu ne connais pas correctement le système des pointeurs, tu va patauger sur toute la programmation, c'est une étape que tu ne pourra pas évité sur un programme digne de ce nom :oui:

tu abordera les prototype, fonctions, et tableaux dans le chapitre sur les connaissances plus avancée :oui:

Le plus plaisant te sera d'apprendre à faire une fonction avec des paramètres attendus, et de crée tes propres types de variables (comme int, char etc...) m'enfin tu verra par toi même, si il y a un problème, up ce topic, j'y traine pas mal :ok:

realmyop
realmyop
Niveau 8
26 novembre 2010 à 09:12:07

Ok merci c'est vraiment gentil de ta part :-)
Oui j'ai déjà fini le chapitre sur les pointeurs, et j'avoue la première fois que je l'ai lu, c'était un peu confus, mais je le relis souvent et je comprends mieux. :p)

Lapintade
Lapintade
Niveau 30
26 novembre 2010 à 11:13:27

Et pour répondre simplement a la question, les paramètres de la fonction main correspondent aux paramètres que tu peux passer a ton exécutable quand tu le lance.

par exemple si dans une fenetre dos tu tape: monjeu.exe -s hello
Et bien la fonction main recevra un tableau (argv) de 3 (argc) valeurs qui seront "monjeu.exe", "-s" et "hello".

Pratique pour pas mal de choses.

realmyop
realmyop
Niveau 8
26 novembre 2010 à 11:18:27

Ok merci pour ces précisions Lapintade ! :)

AmauryPans
AmauryPans
Niveau 5
29 novembre 2010 à 01:23:09

Salut, c'est moi, RealMyop (banni temporairement parce que j'ai posté sur le réclamation).

J'ai un petit souci, je suis occupé à voir le chapitre du site du zéro sur "Créez vos propres types de variables !", et je dois faire un petit exercice. Le but, c'est de créer un tableau de type Personne et de demander les informations de chacun grâce à une boucle. D'abord voici ma structure :

  1. ifndef STRUCTURES_H_INCLUDED
  2. define STRUCTURES_H_INCLUDED

typedef struct Personne Personne;
struct Personne
{
char nom[100];
char prenom[100];
char adresse[1000];

int age;
int garcon; // Booléen : 1 = garçon, 0 = fille
};

  1. endif // STRUCTURES_H_INCLUDED

Voici ensuite mon tableau de type personne :

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include "structures.h"

int main(int argc, char *argv[])
{
Personne joueur[2] = {"", "", "", 0, 0};
int i = 0;

for (i = 0 ; i < 2 ; i++)
{
printf("Quel est votre nom ?\n");
scanf("%s", joueur[i].nom);
printf("Quel est votre prenom ?\n");
scanf("%s", joueur[i].prenom);
printf("Quel est votre adresse ?\n");
scanf("%s", joueur[i].adresse);
printf("Quel age avez-vous ?\n");
scanf("%d", joueur[i].age);
printf("Etes vous un garçon ou une fille ? Tapez 1 pour garcon et 0 pour fille.\n");
scanf("%d", joueur[i].garcon);

printf("Votre nom est %s, votre prenom est %s, votre adresse est %s, vous avez %d ans, et vous etes un(e) %d\n", joueur[i].nom, joueur[i].prenom, joueur[i].adresse, joueur[i].age, joueur[i].garcon);
}
}

Le soucis déjà, est que si je met trop d'info à adresse ça plante, mais si j'en moins ça passe mais ensuite arrivé à age, je met un chiffre et ça plante :doute: Par contre si je met une lettre ça passe mais là ça bug et ça passe tout. Je ne vois pas le problème ? Dans ma structure, la variable age est de type int. et je initialise à 0 avant de commencer.
Vous pouvez me mettre sur la voie ? :merci:

pilo1488
pilo1488
Niveau 10
29 novembre 2010 à 09:26:17

Salut!

Alors pour addresse, tu es limité a 999 caractères.
Ensuite pour age, tu dois passer le pointeur vers ta variable dans scanf :
scanf("%d", &joueur[i].age);

voila avec ca ca devrait rouler!

Lapintade
Lapintade
Niveau 30
29 novembre 2010 à 11:04:07

C'est valable aussi pour "nom" et "adresse", si tu veux ecrire pareil, tu peux mettre
&(joueur[i].nom[0]) (=adresse de la premiere case).
Comme "nom" est un tableau, quand tu ecris "nom" tout seul, cela revient au meme que d'avoir un pointeur sur la premiere case du tableau &(joueur[i].nom[0]).

Le soucis déjà, est que si je met trop d'info à adresse ça plante

Ca c'est etrange, je doute que tu mettes plus de 999 caractères

AmauryPans
AmauryPans
Niveau 5
29 novembre 2010 à 11:26:37

Pilo1488, merci, ça marche parfaitement ! Il faudrait que je relise un peu sur les pointeurs :-)

Lapintade, merci aussi pour ces infos ! Pour l'adresse, j'ai retesté aujourd'hui et il n'y a pas de soucis, je trouve ça bizarre...

Ti-samu
Ti-samu
Niveau 10
01 décembre 2010 à 12:21:24

Oui relis les pointeurs, ça t'évitera les erreur sur les tableaux et les renvoies de paramètres sur tes fonctions :ok:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware