Probablement, ça veut simplement dire que c'est pas "C pour les nuls...". C'est pour les gens qui reflechissent...Citation:
Envoyé par 0v3rb1t
Version imprimable
Probablement, ça veut simplement dire que c'est pas "C pour les nuls...". C'est pour les gens qui reflechissent...Citation:
Envoyé par 0v3rb1t
par là je voulais dire que la compréhension du livre ne nécessite pas de "hautes" compétences en mathématiques et une bonne connaissance du C.
je connais le fgets(), je compte apprendre les unions, et le tri par insertion, les listes chaînées et quelques autres "trucs", aurai-je le niveau?
sinon quand je vois 652 pages, c'est pas mal quand même.
Il y a certainement des parties plus difficiles vers la fin. Ce n'est pas le problème. C'est un livre pour la vie (si tu programmes en C sérieusement). Si c'est pour faire un an de C à la fac parce que c'est au programme et tout oublier après, c'est pas la peine...Citation:
Envoyé par 0v3rb1t
Je compte devenir ingénieur en informatique, alors je prends ça avec le plus de sérieux possible.
De plus je déteste ne pas comprendre quelque chose et quand ça se produit, je suis capable d'analyser le problème pendant des heures, jusqu'à avoir compris.
Je suis passionné par le C et quand quelque chose me passionne, rien de m'arrête.
Un langage de programmation est obligatoirement enseigné à la fac?
Bon profil, ça. Fonce !Citation:
Envoyé par 0v3rb1t
Et ce que tu ne comprends pas aujourd'hui, tu le comprendras demain.
Un bouquin comme ça, ca se relit entièrement tout les 1 à 2 ans... On passe à coté de plein de choses au début...
Par contre, évite language et pationne, pour un ingénieur, ça ne fait pas sérieux... C'est langage, passionne ...
En informatique, oui, et même en math, electronique, mesures physiques...Citation:
Un language de programmation est obligatoirement enseigné à la fac?
Merci -ED- pour tes réponses sérieuses.
Je vais acheter ce livre et progresser en C!
+++
Bien.Citation:
Envoyé par 0v3rb1t
Merci de ta proposition, mais aux vues des caractéristiques de ton programme je vais me montrer réaliste et admettre que ce n'est pas encore mon niveau :lol: Je vais plutot insister sur mon carnet d'adresse en essayant de faire simple au début pour ensuite compliquer, sinon je vais me perdre mais merci beaucoup de ton offre :mrgreen:Citation:
Envoyé par 0v3rb1t
J'ai de nouveau un soucis, j'ai essayé d'employer la fonction fprintf, le code se compile mais lors de l'exécution du programme, lorsque j'ai terminé d'indiqué tous les champs j'ai de nouveau le rapport d'erreur Windows, quelqu'un voit une ou plusieurs erreurs dans mon code svp ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 #include <stdio.h> #include <stdlib.h> /*****************************************************************************/ /*************************** FONCTION ECRITURE *******************************/ /*****************************************************************************/ void fecriture (count, nom, prenom, numtel) { if (count == 3) { fprintf ("%s;%s;%d", nom, prenom, numtel); } } /******************************************************************************/ /*************************** PROGRAMME PRINCIPAL ******************************/ /******************************************************************************/ int main (void) { char nomfich[21] = ""; char nom[16] = ""; char prenom[16] = ""; char numtel[11] = ""; int menu = 0; int count = 0; printf (" 0- Creation d'un Nouveau Fichier ?\n" " 1- Modification d'un Fichier existant ?\n"); scanf ("%d", &menu); switch (menu) { case 0: { printf ("Nom du fichier a creer ?"); scanf ("%s", nomfich); FILE *sortie = fopen (nomfich, "w"); if (sortie != NULL) { do { printf ("Nom ?"); scanf ("%15s", nom); count = count + 1 ; printf ("Prenom ?"); scanf ("%15s", prenom); count = count + 1 ; printf ("Numero de telephone ?"); scanf ("%10s", numtel); count = count + 1 ; fecriture (count, nom, prenom, numtel); } while (count <= 0 || count > 1); fclose (sortie); } } break; default: break; } return EXIT_SUCCESS; }
Rien qu'en voyant fecriture, on se dit "y'a quelque chose qui manque".
Ce qui me surprend le plus, c'est que ça compile...
Très mauvais, ça...Code:scanf ("%s", nomfich);
Ah oui ? Que manque-t il stp ?Citation:
Envoyé par Médinoc
- Pour fecriture() : Le type des paramètres.
- Pour scanf() : Une limite de taille.
Merci pour ta réponse j'ai mis ça:Citation:
Envoyé par Médinoc
Mais j'ai toujours le meme problème je vois vraiment pasCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 #include <stdio.h> #include <stdlib.h> /*****************************************************************************/ /*************************** FONCTION ECRITURE *******************************/ /*****************************************************************************/ void fecriture (int count, char nom, char prenom, char numtel, FILE * sortie) { if (count == 3) { fprintf (&sortie, "%s;%s;%d", &nom, &prenom, &numtel); } } /******************************************************************************/ /*************************** PROGRAMME PRINCIPAL ******************************/ /******************************************************************************/ int main (void) { char nomfich[21] = ""; char nom[16] = ""; char prenom[16] = ""; char numtel[11] = ""; int menu = 0; int count = 0; printf (" 0- Creation d'un Nouveau Fichier ?\n" " 1- Modification d'un Fichier existant ?\n"); scanf ("%d", &menu); switch (menu) { case 0: { printf ("Nom du fichier a creer ?"); scanf ("%20s", nomfich); FILE *sortie = fopen (nomfich, "w"); if (sortie != NULL) { do { printf ("Nom ?"); scanf ("%15s", nom); count = count + 1 ; printf ("Prenom ?"); scanf ("%15s", prenom); count = count + 1 ; printf ("Numero de telephone ?"); scanf ("%10s", numtel); count = count + 1 ; fecriture (count, nom, prenom, numtel, sortie); } while (count <= 0 || count > 1); fclose (sortie); } } break; default: break; } return EXIT_SUCCESS; }
Et ça compile? 8O
(les caractères en rouge sont à supprimer)Code:
1
2
3
4
5
6
7 void fecriture(int count, char const * nom, char const * prenom, char const * numtel, FILE * pSortie) { if (count == 3) { fprintf(pSortie, "%s;%s;%s", &nom, &prenom, &numtel); } }
PS: Je n'arriverai sans doute jamais à comprendre que des gens trouve plus lisible de séparer une fonction de sa parenthèse ouvrante...
Ah oki, pourrais tu m'expliquer à quoi servent les "const *" stp ? et le "p" devant "sortie" ?Citation:
Envoyé par Médinoc
- * : Ce n'est pas UN caractère qu'il faut envoyer à la fonction, mais un pointeur sur le premier caractère de chaque tableau.
- const : Parce qu'on ne modifie pas les caractères pointés, alors pouquoi l'autoriser?
- pSortie: Parce que c'est un réflexe à prendre quand on débute: Toujours signaler "pointeur" dans le nom, ça évite de faire des bétises (per exemple, le & qui était devant était de trop, tu te retrouvais avec un FILE**. Tu aurais appelé ton FILE* pSortie dès le début, ça aurait pu te paraître suspect...).
Oki merci beaucoup pour tes explications :DCitation:
Envoyé par Médinoc
J'ai besoin d'un avis je voudrais faire une fonction de saisie mais je ne sais pas comment m'y prendre car dans ce cas là il faudrait que je retourne plusieurs valeurs (nom, prenom,... + count) et je ne sais pas si c'est posible, l'est-ce ? svp
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <stdio.h> #include <stdlib.h> /*****************************************************************************/ /*************************** FONCTION SAISIE *********************************/ /*****************************************************************************/ int fsaisie(int count) { printf ("Nom ?"); scanf ("%15s", nom); count = count + 1 ; printf ("Prenom ?"); count = count + 1 ; printf ("Numero de Telephone ?"); scanf ("%10s", numtel); count = count + 1 ; printf ("Adresse Mail ?"); scanf ("%29s", adrmail); count = count + 1 ; printf ("Adresse Postale ?"); scanf ("%59s", adrpost); count = count + 1 ; return (count) ; }
Regle d'or. avant d'utiliser une fonction nouvelle, lire la doc. Ca parait évident, mais apparament, il est bon d'insister...Citation:
Envoyé par Jiraiya42
http://man.developpez.com/
Il faut utiliser une structure.Citation:
Envoyé par Jiraiya42
Comment apprends-tu le C ? Tu suis un cours, un tuto, tu as un livre ?
Oui c'est évident c'est pour ça que j'ai cherché l'utilisation de fprintf hierCitation:
Envoyé par Emmanuel Delahaye