Bonjour à tous,
Avant tout je tiens à dire que je ne suis pas un professionnel de l'informatique et que je me suis remis à la programmation car j'aimais ça du temps où j'étais étudiant (ça remonte à une dizaine d'années et je ne suis pas allé bien loin...). Par conséquent, j'ai quelques notions mais sans plus. J'ai décidé de me remettre au C en me replongeant dans la lecture du Kernighan et Ritchie. Je n'en suis qu'au début et j'ai déjà un problème auquel je ne trouve pas de solution : le boulet . Il s'agit de l'exercice 1-20 dans lequel il faut remplacer les tabulations par le nombre d'espaces nécessaires pour atteindre la prochaine tabulation. Voici mon code :
La fonction qui pose problème ici est la fonction "chain". Voici les erreurs à la complilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
66
67
68
69 //Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation #include <stdio.h> #define MAXLINE 1000 #define SPACING 6 void chain (char [], int, int); //Crée une chaîne de caractères void efface (char [], int); //Efface une chaîne de caractères void remplace (char [], char [], int ); //Remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochain tabulation main() { char line[MAXLINE] = "\0"; char newline[MAXLINE] = "\0"; int c, i; i = 0; c = getchar (); while (c != EOF){ chain (line, MAXLINE, c); remplace (line, newline, c); printf ("%s\n", newline); efface (line, i); c = getchar (); } getchar (); } void chain (char s[], int MAXLINE, int c) { int i; i = 0; if (c == '\n') s[i] = '\0'; else{ while (c != '\n' && c != EOF && i < MAXLINE){ s[i] = c; ++i; c = getchar (); } s[i] = '\n'; s[i + 1] = '\0'; } } void remplace (char line[], char newline[], int i) { int j, h; i = j = h = 0; while (line[j] != EOF && line[j] != '\n'){ if (line[j] != '\t'){ newline[h] = line[j]; j++; i++; } else{ i = j % SPACING; while (--i > 0) newline[h++] = ' '; i++; } } } void efface (char s[], int i) { for (i = 0; s[i] != '\0'; ++i) s[i] = 0; }
29 C:...\Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation.cpp expected `,' or `...' before numeric constant
C:...\Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation.cpp In function `void chain(char*, int)':
33 C:...\Programme qui remplace les tabulations par le nombre d'espaces necessaires pour atteindre la prochaine tabulation.cpp `c' undeclared (first use this function)
J'ai déjà utilisé cette fonction dans d'autres codes et je n'ai eu aucun problème. Si l'erreur est "évidente", désolé mais vraiment je ne comprends pas du tout ce qui se passe.
Merci d'avance pour vos réponses éclairées.
Pattesvador.
Partager