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

  FORUM HardWare.fr
  Programmation
  C

  listes C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

listes C

n°1930800
natha31
Posté le 09-10-2009 à 23:58:53  profilanswer
 

Bonjour
Voila je suis débutant en C et dans de nombreux programme j'aurais souhaite créer une liste de mots.
par exemple:

Code :
  1. void main()
  2. {
  3.     char tab[3]={"bonjour","a","tous"};
  4.     printf("%c %c %c",tab[1],tab[2],tab[3]);
  5.     getch();
  6. }


Sauf que bien sur ça marche pas parce que les mots sont déjà des tableaux.
(Bien entendu je souhaite utiliser les mots séparément dans mon prog.)
Pourriez-vous m'aider svp?

mood
Publicité
Posté le 09-10-2009 à 23:58:53  profilanswer
 

n°1930802
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2009 à 00:33:14  profilanswer
 

[:ciler]

 

Le type du main est incorrect, getch n'est pas une fonction standard, %c sert à formatter un caractère pas une chaîne, les tableaux C sont indexés à 0 (donc ton tab[3] est un out of bounds) et enfin ton tableau c'est un tableau de chaînes de caractères pas un tableau de caractères (qui serait char tab[4] = { 'f', 'a', 'i', 'l'})

 

T'es pas débutant en C à ce stade, t'as jamais vu un cours ou un tuto C de ta vie oui [:ciler]

 

Et t'écoutes même pas ce que te dit ton compilo (ou alors t'as un compilo bien merdique):

$ clang test.c
test.c:4:18: warning: initializer-string for char array is too long
    char tab[3]={"bonjour","a","tous"};
                 ^~~~~~~~~
test.c:4:28: warning: excess elements in char array initializer
    char tab[3]={"bonjour","a","tous"};
                           ^~~
2 diagnostics generated.
Undefined symbols:
  "_getch", referenced from:
      _main in cc-UrkVLX.o
ld: symbol(s) not found


$ gcc test.c
test.c: In function ‘main’:
test.c:4: error: excess elements in char array initializer
test.c:4: error: (near initialization for ‘tab’)
test.c:4: error: excess elements in char array initializer
test.c:4: error: (near initialization for ‘tab’)
test.c:4: warning: initializer-string for array of chars is too long
test.c:3: warning: return type of ‘main’ is not ‘int’


Message édité par masklinn le 10-10-2009 à 00:39:04

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1930808
natha31
Posté le 10-10-2009 à 02:14:34  profilanswer
 

Salut
 

Citation :

T'es pas débutant en C à ce stade, t'as jamais vu un cours ou un tuto C de ta vie oui [:ciler]


Je te remercie
 
 
Pour le main() c'est vrai que j'utilise d'habitude: main(int argc, char *argv[])
getch() est associé a la fonction getchar() par mon compilo
Et en effet pour la taille du tableau je ne me suis pas relu (je fais souvent l'erreur), je voulais mettre ceci: ...,tab[0],tab[1],tab[2]);

Citation :

%c sert à formatter un caractère pas une chaîne


oui, donc pour une chaine de caractères on utilise quoi (si c'est possible)?

Citation :

ton tableau c'est un tableau de chaînes de caractères pas un tableau de caractères (qui serait char tab[4] = { 'f', 'a', 'i', 'l'})


Je sais, mais je ne souhaite pas traiter chaque lettre une par une.
Il n'est pas possible de faire un tableau de 2 dimensions? 1ere: les chaines, 2eme: les caractères
 
Enfin en C il y a bien une solution pour faire une liste de mots non?

n°1930811
Joel F
Real men use unique_ptr
Posté le 10-10-2009 à 07:47:39  profilanswer
 

http://codepad.org/9NFN5qQg


Message édité par Joel F le 10-10-2009 à 07:49:07
n°1930814
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2009 à 09:22:33  profilanswer
 

natha31 a écrit :

Pour le main() c'est vrai que j'utilise d'habitude: main(int argc, char *argv[])


La signature correcte est indiquée dans les warnings de compilos que j'ai copiés

natha31 a écrit :

getch() est associé a la fonction getchar() par mon compilo


Ben utilises getchar (ou rien du tout, c'est pas comme si ton getch servait à quoi que ce soit) [:spamafote]

natha31 a écrit :


Citation :

%c sert à formatter un caractère pas une chaîne


oui, donc pour une chaine de caractères on utilise quoi (si c'est possible)?


http://www.openbsd.org/cgi-bin/man [...] SD+Current

natha31 a écrit :

Citation :

ton tableau c'est un tableau de chaînes de caractères pas un tableau de caractères (qui serait char tab[4] = { 'f', 'a', 'i', 'l'})


Je sais, mais je ne souhaite pas traiter chaque lettre une par une.
Il n'est pas possible de faire un tableau de 2 dimensions? 1ere: les chaines, 2eme: les caractères


Bien sûr que si, réfléchis au type d'une chaine de caractères en C et mets ça dans un tableau [:spamafote]


Message édité par masklinn le 10-10-2009 à 09:24:11

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1930848
natha31
Posté le 10-10-2009 à 13:56:37  profilanswer
 

Citation :

Ben utilises getchar (ou rien du tout, c'est pas comme si ton getch servait à quoi que ce soit) [:spamafote]


il sert a faire une pause dans le programme pour pas que ca ferme la fenetre desuite
 

Citation :

int main( int argc, const char** argv)
{
  char* tab[] = { "lol","rofl"};
  printf("%s %s",tab[0],tab[1]);
 
  return 0;
}


Merci beaucoup, c'est bien ça que je voulais
 :jap:

n°1930849
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2009 à 14:11:55  profilanswer
 

natha31 a écrit :

Citation :

Ben utilises getchar (ou rien du tout, c'est pas comme si ton getch servait à quoi que ce soit) [:spamafote]


il sert a faire une pause dans le programme pour pas que ca ferme la fenetre desuite


T'ouvres un shell et tu lances le programme dedans au lieu de cliquer dessus [:masklinn:1]  
 
Ton getch ne sert à rien.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1933415
Nethacker
rule televisions, rule minds
Posté le 19-10-2009 à 20:07:03  profilanswer
 

un system("pause" ); si l'on est sur windows fera l'affaire !

Message cité 1 fois
Message édité par Nethacker le 19-10-2009 à 20:07:10
n°1933447
masklinn
í dag viðrar vel til loftárása
Posté le 19-10-2009 à 21:07:23  profilanswer
 

Nethacker a écrit :

un system("pause" ); si l'on est sur windows fera l'affaire !


 [:everything4free]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1934321
Nethacker
rule televisions, rule minds
Posté le 21-10-2009 à 21:10:29  profilanswer
 

non mais vous imaginez le temps qu'il faudra pour ouvrir un shell s'y déplacer (avec les tabulations pour la complétion automatique) pour en final executer son programme ? surtout s'il on a plusieurs programmes à gérer, on va tout de même pas laisser les fenêtres ouvertes pour un éventuel test ? et surtout qu'avec les compilateurs des fois c'est eux qui lancent le programme et là t'as aucune chance à part mettre une pause ! très expressive ton émoticone ... franchement qu'est ce que cela veut dire ?

mood
Publicité
Posté le 21-10-2009 à 21:10:29  profilanswer
 

n°1934322
jesus_chri​st
votre nouveau dieu
Posté le 21-10-2009 à 21:23:31  profilanswer
 

les breakpoints ça existe aussi...
le développement ça se fait dans un compilo, et on débug avec le compilo, pas avec des getchar, des system("pause" ) ni des printf.
 
Même débutants, apprenez rapidement à vous servir d'un compilo avec debugger ou vous perdrez beaucoup de temps.
 
A la décharge des étudiants, je n'ai jamais vu de profs enseigner l'utilisation d'un compilo, seulement le langage.

n°1934327
masklinn
í dag viðrar vel til loftárása
Posté le 21-10-2009 à 21:39:01  profilanswer
 

Nethacker a écrit :

non mais vous imaginez le temps qu'il faudra pour ouvrir un shell s'y déplacer (avec les tabulations pour la complétion automatique) pour en final executer son programme ?


Environ 3s. Et t'es pas obligé de fermer ton shell entre deux tests.

Nethacker a écrit :

on va tout de même pas laisser les fenêtres ouvertes pour un éventuel test ?


Pourquoi pas [:pingouino dei]

Nethacker a écrit :

très expressive ton émoticone ... franchement qu'est ce que cela veut dire ?


Que c'est gerbant?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1934329
Nethacker
rule televisions, rule minds
Posté le 21-10-2009 à 21:39:36  profilanswer
 

respect ! breakpoints plus les variables suivies !

 

EDIT :

masklinn a écrit :


Environ 3s. Et t'es pas obligé de fermer ton shell entre deux tests.

 


 

Non mais c'est plus facile de compiler et d'éxecuter depuis le compilo qui lui ne t'ouvrira pas le shell dans le répertoire où tu codes et attendera que tu executes mais lancera directement le programme qui se fermera à la fin, la meilleure façon est celle citée par jesus christ !

Message cité 1 fois
Message édité par Nethacker le 21-10-2009 à 21:41:38
n°1934331
masklinn
í dag viðrar vel til loftárása
Posté le 21-10-2009 à 21:44:06  profilanswer
 

Nethacker a écrit :

Non mais c'est plus facile de compiler et d'éxecuter depuis le compilo


je pense que tu as du mal avec la terminologie. La majorité des compilos sont en ligne de commande, et ça inclue les compilos MS. Et tu ne peux pas lancer un soft depuis un compilo, c'est pas fait pour ça.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1934333
Joel F
Real men use unique_ptr
Posté le 21-10-2009 à 22:04:04  profilanswer
 

Nethacker a écrit :

non mais vous imaginez le temps qu'il faudra pour ouvrir un shell s'y déplacer (avec les tabulations pour la complétion automatique) pour en final executer son programme ? surtout s'il on a plusieurs programmes à gérer, on va tout de même pas laisser les fenêtres ouvertes pour un éventuel test ? et surtout qu'avec les compilateurs des fois c'est eux qui lancent le programme et là t'as aucune chance à part mettre une pause ! très expressive ton émoticone ... franchement qu'est ce que cela veut dire ?

 

toi t'as passé ta vie sous DevC++ et tu crois tout savoir. C'est beau, j'adore, mais vendredi c'est après-demain. [:absolutelykaveh]


Message édité par Joel F le 21-10-2009 à 22:05:38
n°1934670
Nethacker
rule televisions, rule minds
Posté le 22-10-2009 à 19:34:59  profilanswer
 

Compilo se réfère aussi, bien que c'est faut à l'IDE, où tout simplement un éditeur de texte qui appelera le compilateur pour vous avec les arguments désirés ! perso je compile sous gnu c compiler en ligne de commande sur linux, cc file.c -o nom.c !

n°1934675
Elmoricq
Modérateur
Posté le 22-10-2009 à 20:23:06  profilanswer
 

Sauf que tu racontes âneries sur âneries à des gens plus débutants que toi.
Et que ça finit par énerver.

n°1934684
Nethacker
rule televisions, rule minds
Posté le 22-10-2009 à 20:55:30  profilanswer
 

 [:tusors] [:jesorsv]

n°1934695
Sve@r
Posté le 22-10-2009 à 21:24:25  profilanswer
 

Nethacker a écrit :

non mais vous imaginez le temps qu'il faudra pour ouvrir un shell s'y déplacer (avec les tabulations pour la complétion automatique) pour en final executer son programme ? surtout s'il on a plusieurs programmes à gérer, on va tout de même pas laisser les fenêtres ouvertes pour un éventuel test ? et surtout qu'avec les compilateurs des fois c'est eux qui lancent le programme et là t'as aucune chance à part mettre une pause !


 
Sur mon poste de travail Debian, j'ai paramétré 10 bureaux différents et tous ont en permanence différents shells ouverts sur différents sous-dossiers de mon projet et je jongle avec en permanence. Je ne vois pas ce qu'il y a d'ahurissant la dedans.
 
Et je suis en train de récupérer en plus un 2° écran pour avoir 2 écrans en parallèles avec leurs bureaux indépendants. Bon c'est pas primordial certes mais ça me facilitera certaines vérif..


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1934699
Elmoricq
Modérateur
Posté le 22-10-2009 à 21:54:05  profilanswer
 

sunstudio 12 de mon côté, sur un seul écran pas virtuel :o
(et un 2e écran avec PuTTY sur différents terminaux pour les tests par environnement, mais le plus souvent y a un browser pour passer le temps durant une compil' ou en attendant d'arriver à un breakpoint :o)


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

  listes C

 

Sujets relatifs
[C++/Makefile] Compilation sous windows[C] pb pour passer une matrice en parametre d'un fonction
Interface ADA avec C[C] [Linux - Debian] read/write named pipe
Entiers de taille précise en C++C: addition de grands nombres
[RESOLU]Debutant en C++, petite question a propos d'un programme[matlab/C++] ASA - adaptatibe stimulated annealing
[C] Vider stdin 
Plus de sujets relatifs à : listes C


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