int main(int argc, char *argv[]) {
int arg;
char *buf;
printf("Nombre d'argument: %d\n",argc);
arg =3D atoi(argv[1]);
if (arg < 5) {
sprintf(buf, "%d", arg);
printf("Le nombre est %s.\n",buf);
}
return 0;
}
Quand je le lance, il me met ca:
thierry@debian:~/Master/Posix/Supplement_Semaine2$ ./bin/exo3 2
Nombre d'argument: 2
Le nombre est 2.
3599:
3599: calling fini: /lib/tls/libc.so.6 [0]
3599:
Il m'affiche bien le r=E9sultat, mais il met aussi des lignes bizarres,
mais quand je remplace sprintf(buf, "%d", arg) par sprintf(buf, " %d",
arg) cad en ajoutant juste un espace entre le " et %d, ca marche nikel.
sprintf écrit des données dans un buffer non alloué.
printf("Le nombre est %s.n",buf); } return 0; }
Quand je le lance, il me met ca:
:~/Master/Posix/Supplement_Semaine2$ ./bin/exo3 2 Nombre d'argument: 2 Le nombre est 2. 3599: 3599: calling fini: /lib/tls/libc.so.6 [0] 3599:
Il m'affiche bien le résultat, mais il met aussi des lignes bizarres, mais quand je remplace sprintf(buf, "%d", arg) par sprintf(buf, " %d", arg) cad en ajoutant juste un espace entre le " et %d, ca marche nikel.
Quelqu'un a une idée?
Il faut allouer la place de buf. Il faut tester le nombre d'arguments au programme.
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { int arg; char buf[42];
(void)printf("Nombre d'argument: %dn", argc); if (argc > 1) { arg = atoi(argv[1]); if (arg < 5) { (void)sprintf(buf, "%d", arg); (void)printf("Le nombre est %s.n", buf); } } return 0; }
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 16/10/05 12:01, dans
<1129454997.732041.79560@g43g2000cwa.googlegroups.com>, « Thierry B »
<thierry.bouhnik@gmail.com> a écrit :
sprintf écrit des données dans un buffer non alloué.
printf("Le nombre est %s.n",buf);
}
return 0;
}
Quand je le lance, il me met ca:
thierry@debian:~/Master/Posix/Supplement_Semaine2$ ./bin/exo3 2
Nombre d'argument: 2
Le nombre est 2.
3599:
3599: calling fini: /lib/tls/libc.so.6 [0]
3599:
Il m'affiche bien le résultat, mais il met aussi des lignes bizarres,
mais quand je remplace sprintf(buf, "%d", arg) par sprintf(buf, " %d",
arg) cad en ajoutant juste un espace entre le " et %d, ca marche nikel.
Quelqu'un a une idée?
Il faut allouer la place de buf.
Il faut tester le nombre d'arguments au programme.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int arg;
char buf[42];
(void)printf("Nombre d'argument: %dn", argc);
if (argc > 1) {
arg = atoi(argv[1]);
if (arg < 5) {
(void)sprintf(buf, "%d", arg);
(void)printf("Le nombre est %s.n", buf);
}
}
return 0;
}
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
sprintf écrit des données dans un buffer non alloué.
printf("Le nombre est %s.n",buf); } return 0; }
Quand je le lance, il me met ca:
:~/Master/Posix/Supplement_Semaine2$ ./bin/exo3 2 Nombre d'argument: 2 Le nombre est 2. 3599: 3599: calling fini: /lib/tls/libc.so.6 [0] 3599:
Il m'affiche bien le résultat, mais il met aussi des lignes bizarres, mais quand je remplace sprintf(buf, "%d", arg) par sprintf(buf, " %d", arg) cad en ajoutant juste un espace entre le " et %d, ca marche nikel.
Quelqu'un a une idée?
Il faut allouer la place de buf. Il faut tester le nombre d'arguments au programme.
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { int arg; char buf[42];
(void)printf("Nombre d'argument: %dn", argc); if (argc > 1) { arg = atoi(argv[1]); if (arg < 5) { (void)sprintf(buf, "%d", arg); (void)printf("Le nombre est %s.n", buf); } } return 0; }
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Thierry B
Ha oki. Quand on declare un pointeur vers un char au lieu d'un tableau, on est forcé de faire nous même le malloc donc (qui appremment n'est pas nécessaire quand on declare un tableau), et ensuite de faire un free en fin de programme sur le char* ?
Merci :-) A+
Ha oki.
Quand on declare un pointeur vers un char au lieu d'un tableau, on est
forcé de faire nous même le malloc donc (qui appremment n'est pas
nécessaire quand on declare un tableau), et ensuite de faire un free
en fin de programme sur le char* ?
Ha oki. Quand on declare un pointeur vers un char au lieu d'un tableau, on est forcé de faire nous même le malloc donc (qui appremment n'est pas nécessaire quand on declare un tableau), et ensuite de faire un free en fin de programme sur le char* ?
Merci :-) A+
Eric Levenez
Le 16/10/05 13:23, dans , « Thierry B » a écrit :
Quand on declare un pointeur vers un char au lieu d'un tableau, on est forcé de faire nous même le malloc donc (qui appremment n'est pas nécessaire quand on declare un tableau), et ensuite de faire un free en fin de programme sur le char* ?
Oui, soit on utilise un tableau préalloué, soit on fait l'allocation à la main par malloc et on n'oublie pas de libérer par free.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 16/10/05 13:23, dans
<1129461802.259474.27710@g43g2000cwa.googlegroups.com>, « Thierry B »
<thierry.bouhnik@gmail.com> a écrit :
Quand on declare un pointeur vers un char au lieu d'un tableau, on est
forcé de faire nous même le malloc donc (qui appremment n'est pas
nécessaire quand on declare un tableau), et ensuite de faire un free
en fin de programme sur le char* ?
Oui, soit on utilise un tableau préalloué, soit on fait l'allocation à la
main par malloc et on n'oublie pas de libérer par free.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Quand on declare un pointeur vers un char au lieu d'un tableau, on est forcé de faire nous même le malloc donc (qui appremment n'est pas nécessaire quand on declare un tableau), et ensuite de faire un free en fin de programme sur le char* ?
Oui, soit on utilise un tableau préalloué, soit on fait l'allocation à la main par malloc et on n'oublie pas de libérer par free.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Quand on declare un pointeur vers un char au lieu d'un tableau, on est
définit...
http://mapage.noos.fr/emdel/notes.htm#definitions
forcé de faire nous même le malloc donc (qui appremment n'est pas nécessaire quand on declare un tableau), et ensuite de faire un free en fin de programme sur le char* ?
C'est une solution. On peut aussi l'initialiser avec l'adresse du premier élément d'un tableau valide.
char s[] = "Hello world"; char *p = s;
D'une façon générale, un pointeur n'est qu'une variable comme une autre. Avant de l'utiliser, il faut qu'elle ait été initialisée correctement.
http://mapage.noos.fr/emdel/notes.htm#pointeurs
-- C is a sharp tool
Quand on declare un pointeur vers un char au lieu d'un tableau, on est
définit...
http://mapage.noos.fr/emdel/notes.htm#definitions
forcé de faire nous même le malloc donc (qui appremment n'est pas
nécessaire quand on declare un tableau), et ensuite de faire un free
en fin de programme sur le char* ?
C'est une solution. On peut aussi l'initialiser avec l'adresse du
premier élément d'un tableau valide.
char s[] = "Hello world";
char *p = s;
D'une façon générale, un pointeur n'est qu'une variable comme une autre.
Avant de l'utiliser, il faut qu'elle ait été initialisée correctement.
Quand on declare un pointeur vers un char au lieu d'un tableau, on est
définit...
http://mapage.noos.fr/emdel/notes.htm#definitions
forcé de faire nous même le malloc donc (qui appremment n'est pas nécessaire quand on declare un tableau), et ensuite de faire un free en fin de programme sur le char* ?
C'est une solution. On peut aussi l'initialiser avec l'adresse du premier élément d'un tableau valide.
char s[] = "Hello world"; char *p = s;
D'une façon générale, un pointeur n'est qu'une variable comme une autre. Avant de l'utiliser, il faut qu'elle ait été initialisée correctement.