Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1437 connectés 

  FORUM HardWare.fr
  Programmation
  C

  3 peutite question en C

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

3 peutite question en C

n°1303469
olivier318
tout les langage...!!!
Posté le 11-02-2006 à 14:58:21  profilanswer
 

salut . je suis un débutant en c et j'émeré poser 3 petite Question :
 
1)
ésqu'il existe une fonction ou instruction pour redientionné un tableau (1D) selon le choix de l'utilisateur ?
car quand je déclar un tab avec plusieur valeurs  et je nutilise qu'une petite partie , je gache de la place mémoire inutilement .
2)
comment faire la négation d'une expretion en c ; (le NON) .
3)
coment utiliser une variable booléene en c .
 
voila!        oui   je    sais      je    suis     vrément    débutant  .
 
mérci pour l'aide .

mood
Publicité
Posté le 11-02-2006 à 14:58:21  profilanswer
 

n°1303479
ritzle
Posté le 11-02-2006 à 15:22:12  profilanswer
 

1. il faut faire des allocations dynamiques
2. avec l'opérateur unaire !
3. en C, il n'y a pas de vrai booléen. Le 0 vaut false et toutes les autres valeurs sont true

n°1303482
_darkalt3_
Proctopathe
Posté le 11-02-2006 à 15:34:55  profilanswer
 

Faudrait aussi voir à apprendre le français :o


---------------
Töp of the plöp
n°1303484
ritzle
Posté le 11-02-2006 à 15:41:45  profilanswer
 

_darkalt3_ a écrit :

Faudrait aussi voir à apprendre le français :o


c'est vrai que ca pourrait s'avérer utile :D

n°1303485
olivier318
tout les langage...!!!
Posté le 11-02-2006 à 15:48:00  profilanswer
 

[quotemsg=1303479,2,274546]1. il faut faire des allocations dynamiques
 
 
coment ça des allocations dynamiques    :pt1cable:  
 
 
( le FR !    j'écri rapidemen  pour accélerer   :lol: )
 
mérci pour l'aide coméme  :hello:    
 :jap:  :jap:  :jap:  

n°1303487
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-02-2006 à 15:49:37  profilanswer
 

olivier318 a écrit :

[quotemsg=1303479,2,274546]
( le FR !    j'écri rapidemen  pour accélerer   :lol: )


oui mais non, ici c'est pas un portable. si tu ne veux pas que je ferme ce topic comme j'ai fermé ton précédent, je te demanderais d'écrire correctement


---------------
J'ai un string dans l'array (Paris Hilton)
n°1303489
olivier318
tout les langage...!!!
Posté le 11-02-2006 à 15:56:15  profilanswer
 

OK Ok     désolé

n°1303491
ritzle
Posté le 11-02-2006 à 15:58:48  profilanswer
 

olivier318 a écrit :


coment ça des allocations dynamiques    :pt1cable:  


cherche dans ton bouquin ou des tutos, je vais pas tout t'expliquer ici

n°1303523
Profil sup​primé
Posté le 11-02-2006 à 17:56:42  answer
 

ritzle a écrit :

3. en C, il n'y a pas de vrai booléen. Le 0 vaut false et toutes les autres valeurs sont true


bool appartient à quel langage ??


Message édité par Profil supprimé le 11-02-2006 à 17:57:17
n°1303528
0x90
Posté le 11-02-2006 à 18:11:28  profilanswer
 

Il y a _Bool en C99, qui avec l'inclusion de la stdbool.h devient bool.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le 11-02-2006 à 18:11:28  profilanswer
 

n°1303558
mbarekh
Posté le 11-02-2006 à 19:56:11  profilanswer
 

allocation dyn:
 
int tab[];
 
et apres la taille de ton tab varie automatiquement selon que tu y ajute des elements.

n°1303574
Joel F
Real men use unique_ptr
Posté le 11-02-2006 à 20:32:33  profilanswer
 

mbarekh a écrit :

allocation dyn:
 
int tab[];
 
et apres la taille de ton tab varie automatiquement selon que tu y ajute des elements.


 
NON NON ET NON
 

Code :
  1. int* monTab;
  2. size_t taille = 8;
  3. // allocation
  4. monTab = malloc( taille* szieof(int) );
  5. // desallocation
  6. free(montab);

n°1303575
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-02-2006 à 20:34:26  profilanswer
 

mbarekh a écrit :

allocation dyn:
 
int tab[];
 
et apres la taille de ton tab varie automatiquement selon que tu y ajute des elements.


je quote pour la postérité


---------------
J'ai un string dans l'array (Paris Hilton)
n°1303758
pj_crepes
Posté le 12-02-2006 à 16:36:08  profilanswer
 


+10000
 
 
 
[:aure013]
 

mbarekh a écrit :

allocation dyn:
 
int tab[];
 
et apres la taille de ton tab varie automatiquement selon que tu y ajute des elements.


 
 
 
Il n'y a ni de vecteur ni d'array list en c !!!!
Essaye de déclarer un tableau de cette façon, je pense que le compilateur va t'insulter...
 
 
Pour info un tableau s'utilise de la façon suivante :
 
Définition : (pour un tableau de int comme dans ton exemple)
 

Code :
  1. ...
  2. int tab[TAILLE];
  3. ...


 
TAILLE étant le nombre de cases que tu peux avoir dans ton tableau (le nombre de cases ne peux pas varier !!!), il peut sagir d'une marco constante.
 
Utilisation :  
 

Code :
  1. ...
  2. int val;
  3. val = tab[INDEX];
  4. ...


 
0 =< INDEX < TAILLE
 
 
Pour ce qui est de l'allocation :
google ->  
              stdlib.h
              malloc()
              calloc()
              realloc()
...

n°1303800
skelter
Posté le 12-02-2006 à 17:59:15  profilanswer
 

Joel F a écrit :

NON NON ET NON
 

Code :
  1. int* monTab;
  2. size_t taille = 8;
  3. // allocation
  4. monTab = malloc( taille* szieof(int) );
  5. // desallocation
  6. free(montab);



 
 
et mieux encore, pour plus de modularité
 

Code :
  1. monTab = malloc( taille * sizeof *monTab )


 
parce que la taille d'un objet pointé par monTab (si ce n'est pas un void *) c'est avant tout 'sizeof *monTab'

n°1303807
pj_crepes
Posté le 12-02-2006 à 18:11:26  profilanswer
 

skelter a écrit :

et mieux encore, pour plus de modularité
 

Code :
  1. monTab = malloc( taille * sizeof *monTab )


 
parce que la taille d'un objet pointé par monTab (si ce n'est pas un void *) c'est avant tout 'sizeof *monTab'


 
 
Pas mal, c'est de mieux en mieux. [:acherpy]
Qui a parlé d'objet, c'est du C y a pas de POO là dedans !!!!
Puis le "monTab = malloc( taille * sizeof *monTab )" sa c'est de l'art !!!
 
 
Non mais des fois faudrait penser à ouvrir un bouquin de C !!!
 
Mais bien jouè skelter, tu m'a eut, je pensais pas que c'était possible de poster des trucs pareils.
Impressionant !
 
 
-> Edit :
 
Je viens de trouver sa quelques topics plus bas  
 
http://mapage.noos.fr/emdel/images/c_warn.png
 
mdr  :lol:

Message cité 2 fois
Message édité par pj_crepes le 12-02-2006 à 18:15:24
n°1303823
skelter
Posté le 12-02-2006 à 18:35:02  profilanswer
 

Citation :

Qui a parlé d'objet, c'est du C y a pas de POO là dedans !!!!


la question c'est qui a parlé de POO -> toi
 

Citation :

Non mais des fois faudrait penser à ouvrir un bouquin de C !!!


prete moi le tien
 

Citation :

Mais bien jouè skelter, tu m'a eut, je pensais pas que c'était possible de poster des trucs pareils.
Impressionant !


 
moi non plus je pensais pas, d'ailleur je quote
 

pj_crepes a écrit :

Pas mal, c'est de mieux en mieux. [:acherpy]
Qui a parlé d'objet, c'est du C y a pas de POO là dedans !!!!
Puis le "monTab = malloc( taille * sizeof *monTab )" sa c'est de l'art !!!
 
 
Non mais des fois faudrait penser à ouvrir un bouquin de C !!!
 
Mais bien jouè skelter, tu m'a eut, je pensais pas que c'était possible de poster des trucs pareils.
Impressionant !
 
 
-> Edit :
 
Je viens de trouver sa quelques topics plus bas  
 
http://mapage.noos.fr/emdel/images/c_warn.png
 
mdr  :lol:


 
 
edit: c'est trop fort, je quote un extrait du site d'ou vien ton image  
 
http://mapage.noos.fr/emdel/notes.htm#malloc
 

Citation :

Lorsqu'il s'agit d'un pointeur typé, il existe une technique alternative qui consiste à utiliser la taille d'un élément pointé par ce pointeur :
 

Code :
  1. {
  2.    int *p = malloc (sizeof *p);
  3. }



Message édité par skelter le 12-02-2006 à 18:38:28
n°1303824
pj_crepes
Posté le 12-02-2006 à 18:43:37  profilanswer
 

Citation :

la question c'est qui a parlé de POO -> toi


 
Ok, POO = "Programmation Orientée Objet" -> à partir du moment ou tu parles d'ojet c'est de la POO.
Voici ce que tu as mis dans ton premier post :
 

Citation :

parce que la taille d'un objet pointé par monTab (si ce n'est pas un void *) c'est avant tout 'sizeof *monTab'


 
C'est moi qui ait parlé d'objet ?
 
 

Citation :

prete moi le tien


 
Ha parce que tu n'en as pas, le problème doit être là. :D
 
 

Citation :

moi non plus je pensais pas, d'ailleur je quote


 
Dans ce cas fait toi plaisir, mais j'ai toujours pas vu l'intérêt du quote...

n°1303829
pj_crepes
Posté le 12-02-2006 à 18:53:16  profilanswer
 

Citation :

edit: c'est trop fort, je quote un extrait du site d'ou vien ton image  
 
http://mapage.noos.fr/emdel/notes.htm#malloc


 
C'est vrai, alors pour répondre à sa.
Déjà la différence entre ton code et sa c'est que dans l'exemple du site c'est casté (ce qui fait que sa fonctionne).
Essaye de faire un printf() de sizeof(*p) et autre avec sizeof((int)*p).
Cependant je trouve cela absolument sans intérêt et pas propre du tout.
Et en plus c'est source d'erreurs, ton post en est la preuve...

Message cité 1 fois
Message édité par pj_crepes le 12-02-2006 à 18:54:10
n°1303832
skelter
Posté le 12-02-2006 à 18:55:08  profilanswer
 

Citation :

à partir du moment ou tu parles d'ojet c'est de la POO


 
on n'a pas fini
http://www.google.fr/search?hl=fr& [...] cher&meta=
 

Citation :


Dans ce cas fait toi plaisir, mais j'ai toujours pas vu l'intérêt du quote...


 
explique en quoi ce code

Code :
  1. monTab = malloc( taille * sizeof *monTab )


est une absurdité

n°1303835
skelter
Posté le 12-02-2006 à 18:58:00  profilanswer
 

pj_crepes a écrit :

Citation :

edit: c'est trop fort, je quote un extrait du site d'ou vien ton image  
 
http://mapage.noos.fr/emdel/notes.htm#malloc


 
C'est vrai, alors pour répondre à sa.
Déjà la différence entre ton code et sa c'est que dans l'exemple du site c'est casté (ce qui fait que sa fonctionne).
Essaye de faire un printf() de sizeof(*p) et autre avec sizeof((int)*p).
Cependant je trouve cela absolument sans intérêt et pas propre du tout.
Et en plus c'est source d'erreurs, ton post en est la preuve...


 
je confirmes, achete toi un bouquin sur le langage C, et j'ai bien précisé si le pointeur n'est pas un pointeur void (comme c'est précisé sur le site d'Emmanuel, si le pointeur est typé)

n°1303837
pj_crepes
Posté le 12-02-2006 à 19:00:00  profilanswer
 

Citation :

on n'a pas fini


 
Certes, mais on est dans la section programmation. :D
 
 

Citation :

explique en quoi ce code est une absurdité


 
Bin c'est simple, tu demandes la taille d'une zone mémoire dont l'allocation mémoire n'a pas encore été faite puisque le coeur du sujet est le malloc.

Message cité 1 fois
Message édité par pj_crepes le 12-02-2006 à 19:02:06
n°1303838
skelter
Posté le 12-02-2006 à 19:02:23  profilanswer
 

parce que en plus t'u n'as pas compris ce que retourne sizeof, t'es au courant qu'une expression 'sizeof truc' est résolu statiquement ?
 

Citation :

Certes, mais on est dans la section programmation. :D


 
et alors, c'est pas parce-que je dis objet que je parle forcement de POO, c'est une notion assez abstraite

Message cité 1 fois
Message édité par skelter le 12-02-2006 à 19:04:42
n°1303841
pj_crepes
Posté le 12-02-2006 à 19:04:07  profilanswer
 

skelter a écrit :

parce que en plus t'u n'as pas compris ce que retourne sizeof, t'es au courant qu'une expression 'sizeof truc' est résolu statiquement ?


 
cad ?
par rapport à quoi ?

n°1303842
skelter
Posté le 12-02-2006 à 19:05:32  profilanswer
 

si
 
int *p;
 
alors
 
sizeof *p == sizeof(int)

n°1303849
pj_crepes
Posté le 12-02-2006 à 19:13:54  profilanswer
 

Bin ton compilateur a intérêt à être gentil parce que sous gcc 4.0 (avec les options -W -Wall) -> Warning.
C'est de a bonne technique de bourrin, qui n'a aucun intérêt à part compliquer le code.

n°1303856
skelter
Posté le 12-02-2006 à 19:32:17  profilanswer
 

pj_crepes a écrit :

Bin ton compilateur a intérêt à être gentil parce que sous gcc 4.0 (avec les options -W -Wall) -> Warning.
C'est de a bonne technique de bourrin, qui n'a aucun intérêt à part compliquer le code.


 
l'interet c'est la modularité, et faut vraiment etre maso pour se privé de ce genre d'astuce avec le C
 

Code :
  1. int *p;
  2. ...
  3. p = malloc(taille * sizeof(int));


 
en admettant que sizeof(short) < sizeof(int), si je fais cette modification

Code :
  1. short *p;


en oubliant de modifier le (ou les) appel de malloc correspondant ca fais boum
 
pour le warning, ca te le fait meme en '-ansi', tu peux l'afficher ?


Message édité par skelter le 12-02-2006 à 19:32:57
n°1303902
bill_c
All is possible! Just believe.
Posté le 12-02-2006 à 21:56:44  profilanswer
 

Je me pose bien la question de savoir pourquoi tous les deux "Skelter" et "PJ_crepes" essayent de faire une sorte de chalenge qui a mon avis ne repond pas à question initialement poseée?

n°1303966
Joel F
Real men use unique_ptr
Posté le 12-02-2006 à 23:51:08  profilanswer
 

les e-penis tout ça :sarcastic:
PJ_crepes doit avoir un script perl qui scrite les forum pr voir qui poste le mot "objet" pr repondre d'un psot avec HA LA POO FFS

n°1304149
blackgodde​ss
vive le troll !
Posté le 13-02-2006 à 11:20:24  profilanswer
 

fiou j'ai jamais vu autant d'anneries d'un coup :)

n°1304309
olivier318
tout les langage...!!!
Posté le 13-02-2006 à 14:00:48  profilanswer
 

je ne vois pas l'intêret de ce Bla Bla ....
mais merci comem......................................... :hello:  
 :jap:  :jap:  :jap:

n°1305102
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 12:58:02  profilanswer
 

mbarekh a écrit :

allocation dyn:

int tab[];


et apres la taille de ton tab varie automatiquement selon que tu y ajute des elements.


T'es sûr que tu parles de C ? Parce qu'en C, c'est absolument faux.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1305109
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 13:03:56  profilanswer
 

pj_crepes a écrit :

Pas mal, c'est de mieux en mieux. [:acherpy]
Qui a parlé d'objet, c'est du C y a pas de POO là dedans !!!!


Un objet est une variable. Le C est un langage orienté fonction, mais il manipule quand même des objets. D'autres langages sont orientés objets, mais ils manipulent aussi des fonctions. Il faut se renseigner avant de dire n'importe quoi.

Puis le "monTab = malloc( taille * sizeof *monTab )" sa c'est de l'art !!!


C'est vrai. Il y a quelque chose qui te choque ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1305112
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 13:05:51  profilanswer
 

pj_crepes a écrit :


Ok, POO = "Programmation Orientée Objet" -> à partir du moment ou tu parles d'ojet c'est de la POO.


Tu t'enfonces. Resnseigne toi sur ce qu'est un objet. Et cesse de confondre objet et classe.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1305113
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 13:09:20  profilanswer
 

pj_crepes a écrit :

Bin c'est simple, tu demandes la taille d'une zone mémoire dont l'allocation mémoire n'a pas encore été faite puisque le coeur du sujet est le malloc.


Et alors ? Le compilateur connait le type du pointeur. Il en déduit la taille de l'objet pointé avec 'sizeof *p' qui est une expression constante équivallente à 'sizeof p[0]'. Il n'y a pas de déréférencement.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1305118
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 13:19:14  profilanswer
 

pj_crepes a écrit :

Bin ton compilateur a intérêt à être gentil parce que sous gcc 4.0 (avec les options -W -Wall) -> Warning.


Prouve le. Montre

  • Le code
  • La ligne de commande
  • Le message d'erreur



#include <stdio.h>
 
int main (void)
{
   int *p;
 
#define PRT(x)\
   printf (#x " = %u\n", (unsigned) x)
 
   PRT (sizeof *p);
   PRT (sizeof(int));
 
#undef PRT
 
   return 0;
}


qui donne (Code::Blocks)


sizeof *p = 4
sizeof(int) = 4
 
Press ENTER to continue.


 
gcc 3.4.2


-O2 -DCODEBLOCKS -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int
-Werror-implicit-function-declaration -Wmain -Wparentheses -Wsequence-point
-Wreturn-type -Wswitch -Wtrigraphs -Wunused -Wuninitialized
-Wunknown-pragmas  -Wfloat-equal -Wundef -Wshadow -Wpointer-arith
-Wbad-function-cast -Wwrite-strings -Wconversion -Wsign-compare
-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-declarations -Wmissing-noreturn -Wformat -Wmissing-format-attribute
-Wno-deprecated-declarations -Wpacked -Wredundant-decls -Wnested-externs
-Winline -Wlong-long -Wunreachable-code



Compiling: main.c
Linking console executable: D:\dev\ed02\cb\ed02.exe
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 0 warnings


Message édité par Emmanuel Delahaye le 14-02-2006 à 13:20:34

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1305121
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-02-2006 à 13:24:02  profilanswer
 

et voici maestro qui arrive et qui met tout le monde d'accord :D


---------------
J'ai un string dans l'array (Paris Hilton)
n°1305132
slash33
Posté le 14-02-2006 à 13:34:02  profilanswer
 

Bof ça reste ambigue cette histoire d'objet. En POO, un objet est une instance d'une classe et en programmation procédurale c'est donc une instance de structure ?
 
Ce n'est au fond qu'un problème de vocabulaire mais bon ça serait bien d'aller au bout du sujet.

n°1305150
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 13:49:39  profilanswer
 

Harkonnen a écrit :

et voici maestro qui arrive et qui met tout le monde d'accord :D


T'ain, je pars 3 jours en vacances, et c'est le bazar...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1305169
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-02-2006 à 13:58:32  profilanswer
 

slash33 a écrit :

Bof ça reste ambigue cette histoire d'objet. En POO, un objet est une instance d'une classe et en programmation procédurale c'est donc une instance de structure ?
 
Ce n'est au fond qu'un problème de vocabulaire mais bon ça serait bien d'aller au bout du sujet.


C'est simple; Il faut commencer par définir ce qu'est un objet et ce qu'est une fonction (procédure).
 

  • Un objet est une entité qui contient une information. Celle-ci peut être lue ou écrite.
  • Une prodécure est une séquence d'instructions.


Un langage procédural comme le C est 'orienté procédure' (on dit fonction en C). Ca signifie que l'organisation du code se fait autour des fonctions qui agissent éventuellement sur des données (objets).
 
Un langage orienté objet considère que l'organisation du code se fait autour des objets que l'on va implémenter sous la forme d'une classe regroupant la déclaration des données (objet instanciable) et une instance unique des fonctions servant à manipuler cet objet (les méthodes).


Message édité par Emmanuel Delahaye le 14-02-2006 à 14:00:33

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  3 peutite question en C

 

Sujets relatifs
Petite question ajout d'objet pendant l'executionQuestion en C
question sur un format ?(question débutant) Afficher du texte à partir d'un .txt
Question sur la prog pour un pic (temporisation)Petite question a propos d'un defit d'acces
Question sécurité include()Question de licence ???
Nouvo en programmation et question sur komenkonfé ??DSP à virgule fixe en Q15 ! Petite question !
Plus de sujets relatifs à : 3 peutite question en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR