listes C

listes C - C - Programmation

Marsh Posté le 09-10-2009 à 23:58:53    

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?

Reply

Marsh Posté le 09-10-2009 à 23:58:53   

Reply

Marsh Posté le 10-10-2009 à 00:33:14    

[: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
Reply

Marsh Posté le 10-10-2009 à 02:14:34    

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?

Reply

Marsh Posté le 10-10-2009 à 07:47:39    

http://codepad.org/9NFN5qQg


Message édité par Joel F le 10-10-2009 à 07:49:07
Reply

Marsh Posté le 10-10-2009 à 09:22:33    

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
Reply

Marsh Posté le 10-10-2009 à 13:56:37    

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:

Reply

Marsh Posté le 10-10-2009 à 14:11:55    

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
Reply

Marsh Posté le 19-10-2009 à 20:07:03    

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
Reply

Marsh Posté le 19-10-2009 à 21:07:23    

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
Reply

Marsh Posté le 21-10-2009 à 21:10:29    

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 ?

Reply

Marsh Posté le 21-10-2009 à 21:10:29   

Reply

Marsh Posté le 21-10-2009 à 21:23:31    

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.

Reply

Marsh Posté le 21-10-2009 à 21:39:01    

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
Reply

Marsh Posté le 21-10-2009 à 21:39:36    

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
Reply

Marsh Posté le 21-10-2009 à 21:44:06    

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
Reply

Marsh Posté le 21-10-2009 à 22:04:04    

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
Reply

Marsh Posté le 22-10-2009 à 19:34:59    

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 !

Reply

Marsh Posté le 22-10-2009 à 20:23:06    

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

Reply

Marsh Posté le 22-10-2009 à 20:55:30    

 [:tusors] [:jesorsv]

Reply

Marsh Posté le 22-10-2009 à 21:24:25    

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.
Reply

Marsh Posté le 22-10-2009 à 21:54:05    

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)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed