Derniers sujets
» Windows 10 DOSBOX & EUPHORIC
Aujourd'hui à 22:46 par maximus

» Blake's 7
Aujourd'hui à 16:55 par maximus

» Tyrann III - RPG Oric 2015
Aujourd'hui à 5:52 par didierv

» Capture d'écran (screenshot) en émulation
Hier à 14:39 par kenneth

» Orix : Thread de notification sur le développement
Hier à 10:56 par Jede

» L'immonde Docteur Kokus
Mar 17 Oct 2017 - 18:46 par Dom50

» Rencontre avec Emmanuel Viau (ERE informatique)
Mar 17 Oct 2017 - 18:17 par Dom50

» Organisation RAM vidéo
Mar 17 Oct 2017 - 14:26 par Davros

» OVERLAYS : est-ce accessible avec LCC65
Lun 16 Oct 2017 - 14:47 par Jede

» Holdies
Dim 15 Oct 2017 - 21:09 par Dbug

Qui est en ligne ?
Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 Invités :: 1 Moteur de recherche

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 123 membres enregistrés
L'utilisateur enregistré le plus récent est james64

Nos membres ont posté un total de 5723 messages dans 418 sujets
Portail ORIC




maxiNoob apprend le C

Poster un nouveau sujet   Répondre au sujet

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

maxiNoob apprend le C

Message  maximus le Mar 22 Déc 2015 - 17:04

Bonjour à vous les maîtres du C Very Happy

Je vais essayer de lâcher le BASIC au profit du C, je dis bien je vais essayer, pas sûr que j'aboutisse
Aussi merci par avance de pardonner mes questions qui pourront vous paraître, ... BASIC Razz

Je suis dans le site openclassrooms (ex siteduzéro) qui propose des cours pour débutants, et si le début est assez simple, je bute sur le cours des chaines de caractères, il faut dire que par rapport au BASIC ou au PASCAL, c'est pas de la tarte Suspect

J'essaie d'afficher les lettres en utilisant le code ASCII, ça marche bien avec une lettre unique, comme 65 qui affiche A, mais avec une boucle j'arrive à rien, il affiche tj le même caractère, qqu'un voit il mon erreur ?

Voila le screen de la console (codeblocks)



Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char lettre = 65;
    printf("lettre: %c \n",lettre);
    printf("code ASCII: %d \n",lettre);
    char nom[]="Denis", chaine[6];
    printf("%s \n",nom);
    char i=0;
    do
    {
        i+=1;
        printf("%d : %c / ",i);
    }while (i<66);

    chaine[0] = 'S';
    chaine[1] = 'a';
    chaine[2] = 'l';
    chaine[3] = 'u';
    chaine[4] = 't';
    chaine[5] = '\0';
    printf("%s \n",chaine);
    return 0;
}
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Symoon le Mar 22 Déc 2015 - 19:42

Je dirais ici (mais je suis très rouillé en C) :

printf("%d : %c / ",i);

==> tu demandes à afficher deux variables (%d et %c), mais tu n'en listes qu'une seule après (i)
avatar
Symoon

Messages : 343
Date d'inscription : 26/04/2014

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Mar 22 Déc 2015 - 20:45

Trop fort !! Very Happy

effectivement avec 2 variables ça marche clown



Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char lettre = 65;
    printf("lettre: %c \n",lettre);
    printf("code ASCII: %d \n",lettre);
    char nom[]="Denis";
    printf("%s \n",nom);
    char i=64;
    do
    {
        i+=1;
        printf("%d : %c / ",i,i);
    }while (i<122);

   
    return 0;
}
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Mer 23 Déc 2015 - 9:34

Bon je suis toujours dans les premiers cours que je triture et où je me mélange un peu les pinceaux avec une syntaxe un peu énigmatique, mais surtout j'entrevoie le principe des pointeurs enfin il me semble, dites moi si je me trompe:

les fonctions en C sont évidemment puissantes, mais elles ont un énorme défaut c'est qu'elles travaillent avec des copies des variables, ce qui ne permet pas de les modifier aisément, donc si je comprends bien les pointeurs, en utilisant l'adresse des variables on peut du coup les modifier directement en supprimant ces copies ? c'est ça ?
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Arnoric le Mer 23 Déc 2015 - 11:09

Utiliser les pointeurs en argument de fonction a deux avantages.

Voici un exemple de fonction qui cherche à remplacer un élément dans une structure :
Code:
SBigData findAndReplaceElement(SBigData pListOfElements, SSmallElement pElement);

- Dans ce cas on utilise une copie de la structure en argument, si la structure fait plusieurs kilo-octets tu images le gaspillage de mémoire et de temps processeur pour la dupliquer.
D'ailleurs certains compilateurs, par défaut, indiquent une erreur de compilation.

- Second problème, si tu veux modifier la structure source tu es à nouveau obligé de retourner une copie de la structure

Voici une bonne fonction :
Code:
int findAndReplaceElement(SBigData* pListOfElements, SSmallElement* pElement);

- L'argument est un pointeur, il ne fait que 4 octets (sur un système 32bits) et tu peux directement modifier son contenu.
- En retour de fonction tu peux utiliser le int par exemple indiquer le nombre d'éléments modifiés.

Mais l'utilisation des pointeurs n'est pas toujours indispensable:

Code:
char Addition(char a, char b)
{
   return a + b;
}

Dans ce cas utiliser des pointeurs n'a aucun intérêt, un char fait un octet (contre 4 pour un pointeur) et on a pas besoin de modifier les valeurs d'origine.
avatar
Arnoric

Messages : 4
Date d'inscription : 15/06/2014
Age : 41

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  didierv le Jeu 24 Déc 2015 - 13:36

Raah, j'ai mal à la tete rien qu'à penser aux pointeurs en C.
Courage Maximus. Tu utilises quel outil de programmation : OSDK ou CC65 ?

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
avatar
didierv

Messages : 490
Date d'inscription : 19/01/2014
Age : 54
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Ven 25 Déc 2015 - 9:23

Merci Arno pour ton exemple
Didier > commençons pas le B A BA, j'utilise codeblocks
_____________________________

j'ai laissé le cours de coté pour faire des exercices et franchement c'est dur de dur, en plus j'ai parfois des plantages du programme sans un indice sur sa cause, pas de message d'erreur Suspect

Je m'exerce à la gestion des chaines de caractères et là le prog plante au 2e appel de la fonction de saisie, comme on ne peut pas réaffecter une chaine de caractère, je bidouille, c'est surement pas la bonne façon de faire, mais tout ça me sert à apprendre les bases et à mémoriser cette syntaxe barbare.



Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void saisieMot(char text[], char question[]);// fonction de saisie d'un mot

int main()
{

    char text[20], question[20], chaine[100];
    char question1[]="nom", question2[]="prenom";// items du formulaire
    strcpy(question, question1);
    saisieMot(text,question);
    sprintf(chaine,"tu t'appelles %s \n",text);// fonction d'écriture dans une chaine
    printf("%s\n\n",chaine);
    printf("la chaine a une longueur de %d caracteres\n\n", strlen(chaine));// fonction longueur de la chaine

    strcpy(question, question2);// ça buggue ici je pense
    saisieMot(text,question);
    sprintf(chaine,"tu t'appelles %s \n",text);// fonction d'écriture dans une chaine
    return 0;
}



void saisieMot(char text[], char question[])
{
    printf("Veuillez saisir votre %s: ",question);
    scanf("%s", text);
}


est ce un souci avec la taille du tableau text[]  ?

ça rend fou au début non ? tiens voila l'effet "C"  :  Laughing

avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  didierv le Sam 26 Déc 2015 - 7:52

Bonjour Maximus,

J'ai réouvert codeblocks et ... n'ai pas trouve de bug dans ton programme. Ci-dessous la recopie avec 2/3 lignes supplémentaires pour réafficher le prénom.
RAS.

Code:

int main()
{

    char text[20], question[20], chaine[100];
    char question1[]="nom", question2[]="prenom";// items du formulaire
    strcpy(question, question1);
    saisieMot(text,question);
    sprintf(chaine,"tu t'appelles %s \n",text);// fonction d'écriture dans une chaine
    printf("%s\n\n",chaine);
    printf("la chaine a une longueur de %d caracteres\n\n", strlen(chaine));// fonction longueur de la chaine

    strcpy(question, question2);// ça buggue ici je pense
    saisieMot(text,question);
    sprintf(chaine,"tu t'appelles %s \n",text);// fonction d'écriture dans une chaine
    printf("%s\n\n",chaine);
    printf("la chaine a une longueur de %d caracteres\n\n", strlen(chaine));// fonction longueur de la chaine

    return 0;
}

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
avatar
didierv

Messages : 490
Date d'inscription : 19/01/2014
Age : 54
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Sam 26 Déc 2015 - 13:22

c'est vraiment une gymnastique que de ne pas utiliser directement les variables et de devoir jongler avec des pointeurs, ces fonctions ne sont pas très pratiques , mais bon c'est un langage de bas niveau, ce qui veut dire qu'il faut être d'un haut niveau pour le maitriser. Je pense finir le tuto pour avoir une culture et une compréhension de vos codes, mais je pense pas être capable d'écrire Tyrann4 avec, ou dans 1 an ou 2, le temps de passer par toutes les étapes d'apprentissage du langage Embarassed
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  didierv le Dim 27 Déc 2015 - 3:22

maximus a écrit:je pense pas être capable d'écrire Tyrann4

Courage Maximus,

Perso, je n'ai jamais trop utilisé ces instructions d'extension du c.
Je prends OSDK, j'utilise le C pour la structure générale de mon programme et toutes les e/s de l'oric sont gérées directement avec mes routines. C'est vrai que c'est du travail mais cela est plus fiable que de prendre le C pour générer un programme Oric.

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
avatar
didierv

Messages : 490
Date d'inscription : 19/01/2014
Age : 54
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Dim 27 Déc 2015 - 14:37

voilà ma méthode, je lis le tutoriel en prenant en note les fonctions, puis je fais qq exercices, là j'en suis aux structures de variables, ça c'est balèze Very Happy sauf que pour initialiser un tableau de structure je suis comment dire ... largué Suspect clown

mon petit header
Code:
#define NB_PERSO 6

typedef struct Hero Hero;  // creation du type Hero
struct Hero
{
    char name[20];
    int  race;
    int  pvi;
    int  strength;
};

mon code source
Code:
#include <stdio.h>
#include <stdlib.h>
#include "main.h"


int main()
{
    Hero perso[NB_PERSO-1]; // création d'une variable perso, tableau de 6
    int i=0;
    for (i=0; i<NB_PERSO-1; i++)  // Initialisation (foireuse)
    {
      perso[i].name = "inconnu";
      perso[i].race = 0;
      perso[i].pvi = 0;
      perso[i].strength = 0;
    }

    for (i=0; i<6; i++)
    {
        printf(" nom du hero %d : %s \n",i, perso[i].name);

        /*printf("veuillez saisir le nom du hero %s: ",i+1);
        scanf("%s",perso[i].name);*/
    }
    return 0;
}

quand je saurai faire ça je dois le faire dans une fonction avec pointeurs pale pale
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Dim 27 Déc 2015 - 18:33

Maximus: ton application ne plante pas, par contre si tu t'attends que

   sprintf(chaine,"tu t'appelles %s \n",text);// fonction d'écriture dans une chaine

affiche quelque chose, c'est que tu as oublié quelque chose Smile

Conseil, des parametres type

char toto[]

sont plutot à bannir, utilise

char *toto

Même si ça peut paraître bizarre, il est préférable de dire que c'est un pointeur qu'une table de taille indéterminé, ça ne change rien à la façon d'appeler la fonction, mais ça peut changer certains points d'optimisation, surtout sur un compilateur de mauvaise qualité.


Ensuite

   sprintf(chaine,"tu t'appelles %s \n",text);// fonction d'écriture dans une chaine
   printf("%s\n\n",chaine);

N'a aucun sens, enfin ça ne sert à rien, et le pire, c'est que tu affiches 3 retours à la ligne avec ton code, je suis pas sur que ça soit très utile Very Happy

Pourquoi ne pas directement appeler

   printf("tu t'appelles %s \n",text);
?
Déjà tu économises une variable (chaine) et aussi du temps de calcul (une seule fonction appelée plutôt que 2)



Après pour ton problème de remplissage de structure,

xxx.yyy = "";

est invalide en C.

En C99 minimum tu peux utiliser cette fonctionalité pour remplir une structure avec des valeurs par défaut:

Code:
typedef struct Hero Hero;  // creation du type Hero
struct Hero
{
    char name[20];
    int  race;
    int  pvi;
    int  strength;
};

Hero perso[NB_PERSO] = {
  {
     .name = "inconnu";
     .race = 0;
     .pvi = 0;
     .strength = 0;
  },
[...]
};

Et si vraiment il faut le faire au runtime, je conseillerais cette méthode (la plus rapide):

Code:

void init(void)
{
   Hero perso[NB_PERSO];
   Hero defaultValue = {
     .name = "inconnu";
     .race = 0;
     .pvi = 0;
     .strength = 0;
   }
   int i;

   for(i = 0; i < NB_PERSO; i++)
   {
      memcpy(&(perso[i]), &defaultValue, sizeof(Hero));
   }
};

Attention initialiser la table à NB_PERSO - 1, si tu as NB_PERSO étant égal à 10, ta table va être de 9 positions, et non 10. Seul l'indexation est à partir de 0, la création est le nombre d'entrée dans la table, donc si tu en veux 10 il faut mettre 10 et non 9.

Autre possibilité pour ta table de perso, rajouter un champ "valide", ou 0 est in perso invalide, autre que 1 un perso valide, l'initialisation du tableau se fait d'une manière encore plus simple:

  memset(&perso[0], 0, sizeof(Hero) * NB_PERSO);

Ce qui va remplir la zone mémoire correspondante à ton tableau d'octet 0, soit tout, en gros tout mettre à zéro.
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Lun 28 Déc 2015 - 11:26

merci godzil d'une réponse aussi détaillée, il va me falloir la semaine (de vacances) pour intégrer tout ça, c'est quand même hyper plus complexe que mon petit BASIC Suspect clown
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Admin le Mar 29 Déc 2015 - 13:24

argh j'essaie ta méthode avec une fonction:

Code:
#include <stdio.h>
#include <stdlib.h>
#include "main.h"

void init(void);

int main()
{
    Hero perso[NB_PERSO];
    init();
    int i=0;
    for (i=0; i<NB_PERSO; i++)
     {
      printf(" nom du hero %d : %s \n",i, perso[i].name);
     }
    return 0;
}


    void init(void)
    {
       Hero perso[NB_PERSO];
       Hero defaultValue =
        {
         .name = "inconnu";
         .race = 0;
         .pvi = 0;
         .strength = 0;
        }
       int i;
       for(i = 0; i < NB_PERSO; i++)
       {
          memcpy(&(perso[i]), &defaultValue, sizeof(Hero));
       }
    };

ça marche pas je prends ça en messages d'erreur:


_________________

avatar
Admin
Admin

Messages : 93
Date d'inscription : 02/12/2012

http://oric-concours.forumactif.org

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  iss le Mar 29 Déc 2015 - 15:03

Here is one 'correct' version of your code with some comments.
Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* this code can be moved to 'main.h' */
/* -- begin 'main.h' */
#define NB_PERSO 10

typedef struct Hero Hero;  // creation du type Hero
struct Hero
{
  char name[20];
  int  race;
  int  pvi;
  int  strength;
};
/* -- end 'main.h' */

void init(void);

Hero perso[NB_PERSO]; /* this is global variable */

int main(void)
{
  int i=0; /* i can be uninitialized here */

  init();

  for (i=0; i<NB_PERSO; i++)
  { /* if there is only one line you don't need brackets */
    printf(" nom du hero %d : %s \n",i, perso[i].name);
  }
  return 0;
}


void init(void)
{
  int i;

  Hero defaultValue =
  {
    .name = "inconnu", /* correct is ',' (not ';') */
    .race = 0,
    .pvi = 0,
    .strength = 0
  }; /* this ';' is obligatory */

  for(i = 0; i < NB_PERSO; i++)
  {
    memcpy(&(perso[i]), &defaultValue, sizeof(Hero));
  }
} /* ';' here are not needed */

Additionally: '//' is C++ to-end-of-line comment, for C comments are: /* .... */, although '//' works too ; )
avatar
iss

Messages : 37
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Mar 29 Déc 2015 - 21:06

merci les gars de m'aider, le démarrage c'est toujours le plus ardu, et puis cette ponctuation elle est terrible Evil or Very Mad

ISS ton cade a fonctionné mais la compilation a bien duré 2 minutes Question Question Suspect Suspect
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  iss le Mar 29 Déc 2015 - 21:20

WOW, 2 min?!?
I see you are using Code:Blocks IDE (good!) but what compiler?
By me it needs <5 sec with mingw32-gcc.

And this is gcc under Linux:

$ time gcc -o test test.c

real    0m0.050s
user    0m0.039s
sys     0m0.006s

And the running program:
$ ./test
nom du hero 0 : inconnu
nom du hero 1 : inconnu
nom du hero 2 : inconnu
nom du hero 3 : inconnu
nom du hero 4 : inconnu
nom du hero 5 : inconnu
nom du hero 6 : inconnu
nom du hero 7 : inconnu
nom du hero 8 : inconnu
nom du hero 9 : inconnu
Fichiers joints
CB.jpg (13 Ko) Téléchargé 41 fois
avatar
iss

Messages : 37
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Mar 29 Déc 2015 - 21:43

ha ben là ça remarche en 2 secondes Suspect p-e que mon windows était ralenti ou l'antivirus parfois me bloque, en tout as merci, il me reste à cogiter des structures à jongler avec pour bien les comprendre et les mémoriser

Sinon dans le tutoriel que je suis, il est interdit d'utiliser les variables globales, on doit utiliser fonctions et pointeurs Wink
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Mer 30 Déc 2015 - 1:26

Alors les site/tuto qui disent "les variable globale ou les goto" sont a bannir sont de mauvais tuto.

Les variables globales et les gotos ont des utilisations, il ne faut pas en abuser, et ne pas utiliser une variable globale comme simple parametre d'une fonction, mais il ne faut pas non plus tomber dans l'absurdité ou par exemple la carte d'un jeu est passé en parametre a toutes les fonctions, la on est dans le cas ou une variable globale est bien plus interessantes.

Le goto par exemple est tres utile pour n'avoir qu'un seul point de sortir sur une fonction (et facillite le tracage de fonction, entre autres)

Sinon conseil, non ordre! Very Happy
Quand ton compilateur te sors une longue liste d'erreur TOUJOURS commencer par la premiere erreur/warning, et une fois corrigé, relancer la compilation, et ainsi de suite.

Une erreur dans la liste peux etre due a des erreurs précédentes dans le code, donc pour eviter de passer des heures a tenter de corriger un truc inutile.. Smile

Autre chose important, un warning, meme si il n'empeche pas la compilation est signe qu'il y a potentiellement un probleme, et dans une grosse majorité des cas, un warning est a corriger.

Il est souvent bon d'activer l'option traiter un warning comme une erreur (-Werror) en ligne de commande, -Wall (tous les warnings) est aussi intéressant dans pas mal de cas, en fait pas mal de bugs a l'execution sont due a des warning ignorées.
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Jeu 31 Déc 2015 - 10:09

c'est Openclassroom, c'est pour les débutants en C, je pense qu'ils veulent nous inculquer les bases

Bon un peu de repos, plus de C jusqu'à l'année prochaine Laughing

Merci de vos conseils Wink

A+
avatar
maximus

Messages : 1090
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Hialmar le Mer 6 Jan 2016 - 22:28

Je plussoie Godzil, sur un Oric, avec le peu de mémoire qu'on a il faut absolument utiliser des variables globales et même probablement des goto.

Ca permet d'économiser un max de RAM.

Par contre, pour l'initialisation des structures je pense que ça ne marchera pas ni avec OSDK ni avec LCC65.

Il faut faire à la main, variable par variable.

J'en profite pour souhaiter la bonne année à tout le monde.

Désolé mais j'ai déménagé pendant les vacances et n'ai pas pu suivre le forum.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 815
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Mer 6 Jan 2016 - 23:53

Ha mais je n'ai jamais dit que l'init des structure tel que la version utilisant le C99 etait compatible avec OSDK/CC65.
J'ai bien dit "C99"

Mais meme, il est préférable d'initialiser une structure statiquement, que dynamiquement, autant que possible bien sur, enfin apres c'est un compromis mémoire/temps d'execution.
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Hialmar le Jeu 7 Jan 2016 - 8:55

Oui je sais que tu l'as dit mais je pense que C99 c'est un peu du grec pour les non informaticiens donc je préfère insister dessus sachant qu'on est qu'en même sur un forum Oric et que le but ultime de Maximus est de faire Tyrann 4 pour Oric.

Je suis aussi à fond pour les initialisations statiques. Mais avec les compilos pour Oric il faut gérer les inits à l'ancienne comme ça :
Code:

#include <lib.h>

#define NB_PERSO 3

typedef struct Hero Hero;  // creation du type Hero
struct Hero
{
    char name[20];
    int  race;
    int  pvi;
    int  strength;
};

Hero perso[NB_PERSO] = {
  {"inconnu",0,0,0},
  {"inconnu",0,0,0},
  {"inconnu",0,0,0}
};

void main()
{
   int i;
   printf("Hello World !\n");
   
   for(i=0; i<NB_PERSO; i++) {
      printf("Nom : %s, Race : %d, Vie : %d, Force : %d\n", perso[i].name, perso[i].race, perso[i].pvi, perso[i].strength);
   }
}

J'ai testé sur OSDK et ça marche sans pb.

Maximus, je te conseille rapidement de passer à OSDK pour ne pas prendre d'habitudes sur des trucs qui ne sont pas compatibles.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 815
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Jeu 7 Jan 2016 - 12:59

Hum, a mon sense il est plus simple d'appresndre avec un compilo qui ne fait pas des conneries 1 fois sur 2 Very Happy

OSDK fait des miracles de fournir du C pour l'Oric, mais il a quand meme pas mal de soucis pas tres amusant pour un débutant Very Happy
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  didierv le Jeu 7 Jan 2016 - 13:36

Bonjour à tous

100 pour 100 d'accord avec Patrice. J'aurais fait pareil et cela est assez lisible je trouve.
je me demande juste quelquefois si je ne devrait pas tester cc65 qui permettrait en plus de coder sur Apple par exemple en même temps.

Là où je flanche mais je n'ai pas trop testé c'est dans l'utilisation de pointeurs.
Par exemple puis-je avoir :
_ ma structure du perso qui adresse $9000 zone de datas de mon programme et à d'autres moments je donne la même zone à une autre structure de données
_ ou vu différemment ; un programme noyau chargé de $1000 a $2000 et des modules programme A, B ... chargés en $2000 a tour de role qui adressent des structures stockées en $9000

je ne sais pas si je suis clair.
didier

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
avatar
didierv

Messages : 490
Date d'inscription : 19/01/2014
Age : 54
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum