xarier
Messages postés688Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention19 mai 2005
-
23 juin 2004 à 01:20
xarier
Messages postés688Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention19 mai 2005
-
23 juin 2004 à 13:56
Salut
je poster plusieur question ces jour si ,alors j'ai pensé de les posté toutes .
svp je voudrait que vous m'expliquez les choses qui sont un peut deficile en detaill
merci :)
voila :
les fonctions suivante font koi au juste :
-memmove : il deplace un bloc de meme mais un ex sera
meiux merci :
-memcpy : je c qu'il copie un bloc de memoire (Ex)
c koi ladifference entre une fonction avec __stdcall et sans et encore une fonction avec inline et sans .
-strstr : j'ai rien pigé la
-comment convetir un string en un char *
et finalement : #define MEMDISPO (MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN)
la j'ai rien pigé
Merci
Life is Short 8-)
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 23 juin 2004 à 03:11
char chaine1[50];
char chaine2[50];
size_t len = 0;
strcpy(chaine1, "&*/?*/&?+_)*/Bonjour NitRic!");
/* à partir du 13e caractères sur une longeur de 15 caractères */
memmove( chaine1, chaine1+13, 15);/* les 13 premiers caractères seront 'écrasé' */
chaine1[ 15 ] = '\0';
printf("%s\n", chaine1);
/*
Affiche à l'écran:
Bonjour NitRic!
En gros, on déplace la chaine: Bonjour NitRic!
de 13 caractères vers la gauche
*/
len = strlen("Bonjour NitRic! Ca va bien?");
/*
Copie X octets dans chaine1
ici, X est représenté par 'len'
*/
memcpy( chaine1, "Bonjour NitRic! Ca va bien?", len );
chaine1[ len ] = '\0'; /* ajoute le caractère de fin de chaine(obligatoire) */
printf("%s\n", chaine1);
/*
Affiche à l'écran:
Bonjour NitRic! Ca va bien?
*/
__stdcall c'est une convention d'appel
la Win32 API par exemple, utilise cette
convention d'appel. Avec la convention d'appel
__stdcall, on ne peut pas spécifier un nombre
variable d'argument par exemple( void func(char * p, ...); )
etc ... J'ai trouvé ceci, ca sera surement plus
claire que mes explications:
- __stdcall Specifics
- A __stdcall function’s arguments are pushed onto
- the stack from right to left, and the called
- function pops these arguments from the stack before
- it returns.
- For C, the __stdcall naming convention uses the
- function name preceded by an underscore ( _ ) and
- followed by an at sign (@) and the size of the
- function’s arguments in bytes. No case translation
- is performed. The compiler uses the following template
- for the naming convention: _functionname@number
une fonction inline c'est simple
ex:
inline int Mod( int i, int a ) {
return ( i % a );
}
ensuite, dans ton code si
tu utilise cette fonction:
void main() {
int i = 5;
int a = 17;
printf("%d\n", Mod(i, a));
}
il sera traduit
de cette facon:
void main() {
int i = 5;
int a = 17;
printf("%d\n", (i % a));
}
Par contre, c'est le compilateur
qui à le dernier mot, une fonction
avec le mot clé inline ne sera pas
obligatoirement inline, c'est le
compilateur qui décide mais, pour
la fonction Mod() plus haut, il y
à je dirais 99.99% des chances que
la fonction soit inline, en gros
le compilateur remplace l'appel
de la fonction par le code qu'elle
contient
strstr() c'est simple aussi
il renvoie un pointeur sur la
première occurence de la chaine
recherché
char chaine1[50];
char * ptr = NULL;
strcpy(chaine1, "Bonjour NitRic!");
ptr = strstr( chaine1, "NitRic!" );
if ( NULL != ptr ) {
/*
Affiche à l'écran:
if ( 8 & val ) {
printf("8 est present dans %d\n", val);
}
else {
printf("8 n'est pas present dans %d\n", val);
}
/*
Affiche à l'écran:
8 est present dans 63
*/
if ( 16 & val ) {
printf("16 est present dans %d\n", val);
}
else {
printf("16 n'est pas present dans %d\n", val);
}
/*
Affiche à l'écran:
16 est present dans 63
*/
val &= ~4; /* retire la valeur 4 */
if ( 4 & val ) {
printf("4 est present dans %d\n", val);
}
else {
printf("4 n'est pas present dans %d\n", val);
}
/*
Affiche à l'écran:
4 n'est pas present dans 59
*/
val |= 24; /* ajoute 24 */
if ( 24 & val ) {
printf("24 est present dans %d\n", val);
}
else {
printf("24 n'est pas present dans %d\n", val);
}
/*
Affiche à l'écran:
xarier
Messages postés688Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention19 mai 2005 23 juin 2004 à 13:56
SVP le msg qui est en haut celui sybitron et le mien car comme je suis sur un ordinateur public alors j'ai pas fait attention et je ne me suis pas deconecter et je poster ce msg