TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 2 | |
| Pseudo | Commentaire |
|---|---|
| Page : 1 2 | |
Renault
|
# Posté le 31/01/2006 20:03:48 |
« Tout est relatif »![]() Groupe : Membres |
Bonjour,
Bravo M@teo, comme toujours de bonnes explications, j'ai compris malgrès que ça soit un petit peu dur par endroit mais en général c'est bien passé.
Est ce qu'il y a un endroit où on a accès à tout les équivalents numérals des lettres en C ? Oui oui comme tous les programmeurs (tu le dis toi même ) je suis un feignant de taper et de voir les résultats interminables (quoique ça serait un bon exercice ça aussi quel sado suis-je ).
En tout cas c'est simpa de voir que tu rédiges les cours rapidemment, je t'en suis très reconnaissant et la qualité n'est pas haché donc c'est super méga génial ...
Je te souhaite bonne chance pour la future réalisation des cours qui vont suivre, continue comme ça.
Et merci tes cours me permettent de me la jouer en cours de classe de maths.
Renault. Mon tutoriel : Comment et où se documenter sur les systèmes GNU/Linux ? Mon projet : PHP ou desigers pour un forum et modules de pronostiques de F1. Mon Jabber : Renault@develog.com Configuration matérielle : Intel Core 2 Duo x84_64 2.1 Ghz, nVidia Geforce 8800 GTS, 4 Go de mémoire vive et disque dur de 250Go, le tout sous ![]() ![]() |
Infinity
|
# Posté le 31/01/2006 20:09:47 |
|
Lao-Tseu a dit...j'ai oublié Groupe : Membres |
Joli tuto, qui montre bien l'utilisation des pointeurs et des tableaux. j'ai un peu de mal à suivre (bon ... faut dire que je fait pas mes exos alors :p)
Je me suis planté sur la question de phillipe et Thomas ^^" j'avais oublié le \0 mais sinon, le reste ça va. La table des caractères s'appelle la table ASCII (google est ton ami) |
fock
|
# Posté le 31/01/2006 20:19:20 |
![]() Groupe : Membres |
très bon tutorial ( comme d'habitude quoi!)
par contre faut relire plusieurs fois car pour retenir toutes les fonctions de string.h
|
Binabik
|
# Posté le 31/01/2006 20:45:17 |
Frappadingue![]() Groupe : Membres |
oui c'est cool en fait une fois qu'on a compris pointeur et tableau y'a plus rien à comprendre
sinon les fonctions de string.h il ne faut pas les apprendre par coeur il faut juste savoir qu'il est possible de les utiliser
|
Seb087
|
# Posté le 31/01/2006 21:07:18 |
![]() Groupe : Membres |
Très bon chapitre. Il manque juste un rémusé des différentes utilisations et fonctions sur les caractères à la fin je trouve.
Je note 18. |
louisclem
|
# Posté le 31/01/2006 21:20:06 |
J'aime le![]() Groupe : Membres |
C'est plutôt bien.
Aujourd'hui je n'ai pas envie de dire encore des bêtises, ni de prendre le standard à la lettre pour dire que char peut être signed ou unsigned, ou que l'ASCII n'est pas imposé, enfin bref, mes remarques sont des petis détails.
-Afficher un char avec %ld ça devrait pas planter non ? D'après ce que j'ai compris de printf il faudrait mettre %hhd et sinon le comportement est indéfini. Enfin, c'est peut être encore une bêtise, et selon la norme biensûr... -Tu as légérement oublié de parler de l'initialisation avec char chaine = { 's', 'a', 'l', '\0' } bon c'est un détail mais ça peut être utile
-Pour la saisie de chaîne je pense que ça aurait été là une bonne occasion d'introduire fgets, pour éviter un risque de débordement. Elle est quand même plus adaptée à saisir une chaîne que le scanf
-Dans ta version de strlen il aurait sans doute été beaucoup plus logique d'utiliser une boucle for au lieu de do while. -Dans le QCM dernière question, c'est un peu confus. Il peut simplement refuser de compiler, ou si la variable V existe il peut convertir et afficher un résultat inattendu. Le mot "plantage" en général ça signifie plutôt à l'exécution alors qu'ici dans la plupart des cas il refusera de compiler, sauf si V existe. Voilà, aujourd'hui je reste prudent. Ce ne sont que des petites remarques, rien de vraiment embêtant, tu fais comme tu veux et je mets quand même 16 (petits oublis je trouve).
|
Araya
|
# Posté le 31/01/2006 21:33:00 |
Je suis un Cétra §§![]() Groupe : Membres |
Bon tutorial, quelques remarques cependant :
Il aurait peut-être fallu préciser que le numero de chaque caractère est du code ascii (ainsi qu'un ptit lien vers la tables pour les curieux). Puis comme l'a dit louisclem, c'est toujours bon à savoir qu'on peut stocker une chaine de caractères comme un tableau normal(accolades). A moins que ça soit ma vue qui flanche ( ), je n'ai pas vu écrit qu'il ne fallait pas mettre le caractere & devant le nom du tableau lors d'un scanf à part dans le qcm mais bon.
Pour le dépassement de mémoire, j'en aurait profité pour introduite certains paramètres pour la fonction scanf, par exemple pour éviter le dépassement de mémoire : Code : C scanf("%30s", chaine) //tronque l'entrée à 30 car
Ou encore expliquer comment intégrer les espaces, par exemple de cette façon : Code : C scanf("%[^\n]", chaine) //s'arrete au caractère de saut de ligne
Voilà, bonne chance pour les prochains chapitres. |
M@teo21
|
# Posté le 31/01/2006 22:03:40 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Ce n'est pas la table ASCII qui est utilisée, c'est pour ça que j'en ai pas parlé en fait
<tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
Araya
|
# Posté le 31/01/2006 22:05:53 |
Je suis un Cétra §§![]() Groupe : Membres |
Ha bon
C'est quoi dans ce cas ? j'aurais cru car 65 en code ascii = A comme dans ton exemple
|
rz0
|
# Posté le 01/02/2006 07:29:12 |
meuh![]() Groupe : Membres |
Bah globalement j'avais tout fait remarquer à m@t sauf le scanf avec un scanset.
Pour ce qui est de l'affichage d'un char, en fait, ça devrait se faire avec %d en C89 et %hhd en C99 mais %d marche aussi ; %ld ne marchera pas. Parce que dans une liste d'arguments variable, la promotion des entiers est automatique, on obtient toujours int pour un char ou un short. Pour ce qui est de l'ASCII, ce n'est _pas_ de l'ASCII ; le standard est votre ami, n'est-ce pas, Infinity ? C'est presque entièrement implementation defined, mis à part que les caractères de base (ceux qui servent à écrire le C) doivent avoir une valeur positive et que les chiffres se suivent.
|
wil974
|
# Posté le 01/02/2006 12:58:08 |
|
Groupe : Membres |
Super le tuto
Par contre une petite bourde qui m'a empêché d'avoir 20/20 au QCM : Pour l'avant dernière question : "printf("Cela vaut %ld", strlen("Salut les Zér0s"));" J'ai mis que le code plantait à cause de l'accent aigu : je croyais que la console ne pouvait pas gérer les caractères spéciaux
|
Renault
|
# Posté le 01/02/2006 16:23:40 |
« Tout est relatif »![]() Groupe : Membres |
La console sous Linux supporte les caractères spéciaux.
Puis même quand il y a un caractère spécial sous Windows ou non ça va pas faire buguer le programme, ça sera moche c'est tout.
Encore bravo et merci M@teo.
Mon tutoriel : Comment et où se documenter sur les systèmes GNU/Linux ? Mon projet : PHP ou desigers pour un forum et modules de pronostiques de F1. Mon Jabber : Renault@develog.com Configuration matérielle : Intel Core 2 Duo x84_64 2.1 Ghz, nVidia Geforce 8800 GTS, 4 Go de mémoire vive et disque dur de 250Go, le tout sous ![]() ![]() |
crazyman140
|
# Posté le 01/02/2006 16:57:24 |
![]() Groupe : Membres |
Tout le monde de la table ASCII.
Quelqu'un pourrai m'expliquer ce que c'est?? Merci d'avance. |
Red
|
# Posté le 01/02/2006 18:54:13 |
![]() Groupe : Membres |
Heu...
C'est pas la première fois que ça m'arrive, je dois être maudit ! J'ai répondu bon à toutes les questions du QCM, et j'ai eu 0/20 En gros, il me dit partout : La bonnne réponse était : *celle que j'ai entré* Bug à régler
EDIT : je ne sais pas d'où ça pouvait venir, au bout de la 3e fois, ça remarche. Circulez, il n'y a plus rien à voir ! Ich will ein "Site du Zéro" auf Deutsch übersetzt ! |
Viran
|
# Posté le 12/02/2006 20:08:42 |
![]() Groupe : Membres |
(edit) |
Viran
|
# Posté le 12/02/2006 20:09:02 |
![]() Groupe : Membres |
Bravo pour ce tuto tres complet
Neanmoins ce serait bien qu'il y est une explication pour les espaces car si il y avait pas eu un commentaire pour expliquer comment les enregistrer j'en serais encore a chercher sur internet . Merci a vous deux
ps : vous savez comment faire fonctionner "%[^\n]" dans une boucle? merci
edit : apres 2 heures de recherche j'ai changer scanf en gets j'ai du cependant galerer car lorsque dans ma boucle il lancait le gets pour la 1ere fois ca bugait donc j'ai du decaler ma boucle de -1 pour faire en sorte que le 1er lancement ne fausse pas tout je passe une partie de mon code au cas ou :
Code : C for (j = -1 ; j < utilisateur[0].textes ; j++){ //boucle qui tournera autant de fois qu'il y a de textes
if(i==0){ //s'il sagit du premier joueur if (j != -1){ //s'il sagit du premier lancement du premier joueur, il y aura un bug donc on le saute, tout le reste est donc decaler de -1 printf("texte %ld : ", j+1); //numero du texte du joueurs actuel } gets(textes[t-1].intext); //on mets la valeur du texte actuel dans la variable intext du tableau t de textes (bug lors du 1er affichage) t++; //on augmente d'un le numero du nombre de textes totaux } else { //si ce n'est pas le 1er joueur if (j == -1){ //s'il sagit du 1er lancement du joueur j++; //on doit faire le meme effet que lors du bug, on simule un tour de boucle } printf("texte %ld : ", j+1); //numero du texte du joueurs actuel gets(textes[t-1].intext); //on mets la valeur du texte actuel dans la variable intext du tableau t de textes t++; //on augmente d'un le numero du nombre de textes totaux } } edit : en fait le probleme venait d'un scanf avant le gets qui faisait le bug avec l'aide des zerOs du forum j'ai trouver la solution : Code : C void cleanscan(void)
{ int c; do c = getchar(); while (c != '\n' && c != EOF); } il faut appeler la fonction pour nettoyer le buffer si on veut mettre un gets apres un scanf. Ce serait bien de rajouter tout ca dans le tuto pcq c galere a comprendre
|
Doomi
|
# Posté le 15/03/2006 14:11:47 |
|
Groupe : Membres |
Ultra chiant le gars ...
Code : Console Voici la fin de la chaine a partir du premier des caracteres trouves : xte de test
Ca serait pas plutôt "trouve" ... c'est le premier caractère qui est trouvé .... Sinon tuto nickel comme d'hab ... ça fait du bien un peu de théorie quand on a déjà pratiqué
|
unixora
|
# Posté le 31/03/2006 02:15:45 |
|
Groupe : Membres |
Super tes Tuto !!! Ils m'aident beaucoup
Je suis en graduat et lorsque je voit quelque chose de nouveau, je viens ensuite sur le site et cherche le chapitre qui y ressemble pour le lire et le comprendre. Je viens de voir les chaines de caractères et j'avais l'impression d'être complètement larguer. Mais ton tuto m'as aidé à mieux comprendre. 10/10
|
Bogoris
|
# Posté le 11/04/2006 18:54:18 |
Exit light ! Enter night !![]() Groupe : Membres |
Citation : M@teo21 Enfin, cela dépend de votre programme, mais c'est en tout cas ces fonctions sont la base si vous voulez faire un traitement de texte
Soit il manque un "qui", soit il y a un "c'est" en trop...
![]() Mes projets
Mes tutos
Autres
|
Tim...
|
# Posté le 27/05/2006 17:40:48 |
C'est grand un cheval...![]() Groupe : Membres |
Je regrette le PHP où on avait juste besoin de mettre $truc = "mon texte" pour déclarer une variable .
Le C c'est plus dur que c'que je pensait au début, c'est tout... Bon sinon le tuto est long, incompréhensible et bourré de mots compliqués, et j'ai rien compris. génial, bien écrit. Citation : M@téo21 Ce que vous apprenez là sera payant dans le futur, je peux vous l'assurer.
Quoi !!! le site du zéro va devenir payant ??? Ok je sors... |
Freeman9999
|
# Posté le 30/05/2006 17:34:36 |
|
Groupe : Membres |
J'ai remarquer qu'il était impossible d'utiliser les chaines de caractère avec les conditions, quand on essaie une erreur apparaît dans le debuggeur : incompatible types in assignment . est ce vraiment une fatalité ou ya t'il un moyen de contourner cela ? |
Genezis
|
# Posté le 03/06/2006 18:35:28 |
![]() Groupe : Membres |
@ Freeman9999 :
Bah si tu veux par exemple, verifier si deux chaines sont indentiques, tu utilises la fonction strcmp de la même façon que M@teo21 l'utilises dans son exemple
Je te dis ça, parce que moi c'est ce que je cherchais à utiliser dès le départ sans avoir abordé ce chapitre...Mais ce n'est peut-être pas ça que tu cherche à savoir
Bon sinon comme tous les cours de M@teo21 que j'ai pu lire jusqu'ici, c'est très bien explqiué et super interessant, donc merci à toi ! |
ccbox360
|
# Posté le 04/06/2006 18:52:03 |
|
Groupe : Membres |
Bon tuto, assez compliquer mais l'entrainement à la fin sert beaucoup
|
`Thanatos
|
# Posté le 13/06/2006 21:45:08 |
![]() Groupe : Membres |
Salut a tous les zér0s!
Tes tutos sont super M@teo , j'ai lu plusieurs fois ce tuto, mais je ne trouve pas la reponse a mon
probleme... Je me suis un peu entrainé pour les chaines, mais quand je met un scanf pour une chaine, et que j'entre (par xemple pour une ville) une reponse composée de deux mots, ça me saute la question d'apres en me mettant les deux d'apres cote a cote
je peux mettre mon code si vous voulez.. : #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char Prenom[100]; char Nom[100]; long age = 0; char Ville[100]; char Nationalite[100]; printf ("Quel est ton prenom? "); scanf ("%s", Prenom); printf ("Quel est ton nom? "); scanf ("%s", Nom); printf ("Quel age as tu? "); scanf ("%ld", &age); printf ("Dans quelle ville habites tu? "); scanf ("%s", Ville); printf ("Quelle est ta nationalite? "); scanf ("%s", Nationalite); if (age >= 18) { printf ("tu t'appelles donc %s %s, tu es majeur car tu as %ld ans, tu habites a %s et tu es %s \n", Prenom, Nom, age, Ville, Nationalite); } else { printf ("tu t'appelles donc %s %s, tu es mineur car tu as %ld ans, tu habites a %s et tu es %s \n", Prenom, Nom, age, Ville, Nationalite); } system("PAUSE"); return 0; } Si quelqu'un peut me dire de quoi ça peut venir, ça m'aiderais beaucoup svp
Si l'envie de travailler te prend, assieds toi et attends qu'elle passe. Secret (cliquez pour afficher) Voila mon blog : http://thanatos18.skyblog.com/ |
mzel'vivi
|
# Posté le 16/06/2006 16:41:10 |
|
Groupe : Membres |
Petite bidouille pour connaître les caractères :Code : C #include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) { long i = 0; for (i = 0 ; i < 256 ; i++) { printf("%ld : %c\n", i, i); // chez moi 7 crée un bip } system("PAUSE"); return 0; } Et i peut partir de -128 pour voir le reste. J'aime bien les 185, 201 etc... Qui se lance dans la programmation d'un labyrinthe en console ??
aïe tapez pas
|
Touni
|
# Posté le 19/06/2006 21:26:06 |
|
Groupe : Membres |
Je trouve que c'est vraiment un excellent tutorial ! C'est un des seul qui s'adresse vraiment aux débutants et auquel on comprend quelque chose. |
0v3rb1t
|
# Posté le 30/06/2006 22:24:55 |
|
C et C++, pas C/C++ Groupe : Bannis |
je pars en vacances pendant 1 mois 1/2 à partir de demain, j'apprendrai donc ce chapitre plus tard.
@+++ tout le monde! SMART_TELNET(projet à reprendre) [C]Tutoriel ANSI [C]Bien programmer en C -ed- [C]Développez [C]Wikibooks [C]Sockets [C-python]GTK+ [C-algo]France-IOI [C]Algorithmique |
C0c0
|
# Posté le 02/07/2006 21:51:29 |
Ca y est j'ai une citation !![]() Groupe : Membres |
Salut, très bon tuto.
J'ai tout compris. Tes tutos sont géniales (ça doit te lasser à force que l'on te le dise non ? ) et je vais m'empresser d'aller lire les autres
J'ai vu comment fonctionne la table ASCII en MPI, ça a été un petit plus pour moi même si ce n'est pas de cette table dont il s'agit apparemment ... Pourtant ça y ressemble fortement alors c'est quoi ?
Voilà, bonne continuation. Merci ! Cette fois je mets 20, tu le mérites
|
DaliPotter
|
# Posté le 24/07/2006 05:01:26 |
![]() Groupe : Membres |
Bah voilà, encore un de ces supers cours 20/20.
Comme M@teo l'a demandé (je suis un bon élève moi hein ) J'ai écrit les fonctions strlen, strcpy, strcat, strcmp, strchr, strpbrk et strstr. Pour sprintf, j'ai pas encore terminé
Voilà je les expose, et dites-moi si j'ai bien fait ou si j'aurais pu faire plus simple. Merci d'ajouter vos versions je veux bien comparer pour mieux réussir mes projets à l'avenir
Fonction strlen : longueurChaine
Secret (cliquez pour afficher) Code : C long longueurChaine(const char* chaine) // strlen { long nombreDeCaracteres = 0; char caractereActuel = 0; do { caractereActuel = chaine[nombreDeCaracteres]; nombreDeCaracteres++; } while(caractereActuel != '\0'); //La boucle se répète tant qu'on n'est pas arrivé à la fin du tableau. nombreDeCaracteres--; //On enlève 1 caractère pour ne pas compter le '\0' return nombreDeCaracteres; } Fonction strcpy : copieChaine
Secret (cliquez pour afficher) Code : C char* copieChaine(char* copieDeLaChaine, const char* chaineACopier) { long i, taille = 0; /* Il faut d'abord connaître la longueur de la chaîne à copier. Pour ça, on envoie la chaîne à copier à la fonction longueurChaine déjà réalisée, et on ajoute 1 car cette dernière ne compte pas le '\0' or nous devons le compter car nous devons l'ajouter à la fin de copieDeLaChaine. */ taille = longueurChaine(chaineACopier) + 1; for(i = 0 ; i < taille ; i++) // La boucle se répète tant que i < taille { copieDeLaChaine[i] = chaineACopier[i]; // copieDeLaChaine se remplie au fur et à mesure. } } Fonction strcat : concatChaines
Secret (cliquez pour afficher) Code : C char* concatChaines(char* chaine1, const char* chaine2) { long i = 0, j = 0, difference, taille1 = 0, taille2 = 0, taille = 0; taille1 = longueurChaine(chaine1); // Taille de la chaine 1 taille2 = longueurChaine(chaine2); // Taille de la chaine 2 taille = taille1 + taille2; // Taille des deux chaines for(i = taille1 ; i < taille ; i++) // on initialise i = taille de la chaine initiale. { /* Au début, le '\0' sera remplacé par le premier caractère de la chaine2 et ainsi de suite jusqu'à ce que i < taille c'est à dire le '\0' de chaine2 sera le dernier caractère. */ chaine1[i] = chaine2[j]; j++; } } Fonction strcmp : compareChaines
Secret (cliquez pour afficher) Code : C int compareChaines(const char* chaine1, const char* chaine2) { long taille1 = 0, taille2 = 0, i = 0, caractere1 = 0, caractere2 = 0, resultat = 0; taille1 = longueurChaine(chaine1); taille2 = longueurChaine(chaine2); if (taille1 == taille2) // Si les deux chaines sont égales, donc deuxième test, elles sont identiques ou non ? { do { caractere1 = chaine1[i]; caractere2 = chaine2[i]; i++; } while(caractere1 == caractere2 && i < taille1); // boucle se répète tant que les deux caractères sont identiques ET i inférieur à la taille de la chaine pour ne pas compter le '\0' if(i == taille1) // si i est égale à la taille de la chaine, les deux sont identiques. { resultat = 0; } else // sinon, elles sont différentes. { resultat = 1; } } else // sinon, les deux chaines ne sont pas égales, elles ne sont pas identiques, logique... { resultat = 1; } return resultat; } Fonction strchr : chercheCaractere
Secret (cliquez pour afficher) Code : C char* chercheCaractere(char* chaine, int caractereARechercher) { if(!chaine) { return NULL; } while(*chaine != '\0') // tant que le caractère n'est pas '\0', boucle se répète { if(*chaine == caractereARechercher) // caractère trouvé { return chaine; // on renvoie l'adresse du caractère } chaine++; } return NULL; } Fonction strpbrk : chercheLettres
Secret (cliquez pour afficher) Code : C char* chercheLettres(char* chaine, const char* lettresARechercher) { long adresse = 0; if(!chaine) { return NULL; } adresse = chaine; // On enregistre l'adresse de chaine pour qu'on puisse l'initialiser. while(*lettresARechercher != '\0') { for(chaine = adresse ; *chaine != '\0' ; chaine++) // on redonne à chaque fois la valeur initiale de chaine { if(*chaine == *lettresARechercher) { return chaine; } } lettresARechercher++; // on passe au deuxième caractère et on refait le test dès le début avec chaine initialisée avec adresse. } return NULL; } Fonction strstr : chercheChaine
Secret (cliquez pour afficher) Code : C char* chercheChaine(char* chaine, const char* chaineARechercher) { long longueur = 0, compteur = 0, adresse = 0; if(!chaine) { return NULL; } longueur = longueurChaine(chaineARechercher); while(*chaine != '\0') { while(*chaine == *chaineARechercher) // tant qu'on a trouvé deux caractères identiques { compteur++; // le compteur s'incrémente à chaque fois if(compteur == longueur) // Si les caractères consécutifs sont identiques { return chaine - longueur + 1; // on retourne l'adresse de la chaine et on soustrait la longueur mais on ajoute 1 } else // sinon, y a d'autres caractères à rechercher { chaine++; chaineARechercher++; } } chaine++; } return NULL; } Voilà
![]() |
foester
|
# Posté le 30/07/2006 21:25:10 |
Beer is life !![]() Groupe : Membres |
Bravo à toi tout tes tutos sont géniaux, rien à redire à part....(personne n'est parfait ) la partie sur le tuto PHP : bases de données ou je ne comprend strictement rien!!
Mais baste mon père m'aidera (ingénieur info), enfin jespere
09/10 parce que ces bases de données alors mais vraiment rien qui rentre!!! > [C++] Les templates (New) > [C++] Les fonctions amies (New) > [Maya] Animation facile: les Blend Shapes > Incroyable biographie de canard |
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
498 Zéros connectés |
6 requêtes |
0.0757s (0.0649s)
