tableaux et pointeurs

Messages : 644

Inscription : 27 mars 2008 17:00

Profil de l'utilisateur : Professionnel

Re: tableaux et pointeurs

Message par Calips0 » 03 janv. 2010 22:43

Je me demande si le mot-clé const existe en C, dans mon esprit il était limité au C++.

@ Zitoune : tu as édité ton message, j'en déduis que sur GCC en fait ça passe ?
BCPST -> ENSG Nancy
Diplômé en 2011
Ingenieur en poste

Zitoune

Re: tableaux et pointeurs

Message par Zitoune » 04 janv. 2010 02:17

Calips0 a écrit :Je me demande si le mot-clé const existe en C, dans mon esprit il était limité au C++.

@ Zitoune : tu as édité ton message, j'en déduis que sur GCC en fait ça passe ?
Oui, apparemment le GCC que j'ai installé il y a peu le permet. Avec mon antique version ça plante, par contre :wink:
Il n'y a même pas besoin du const. Mais comme le dit fakbill, ce n'est pas l'esprit, et de plus, il est fort possible que d'autres compilateurs plantent dessus, c'est donc fortement déconseillé à mon avis.

Messages : 9686

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: tableaux et pointeurs

Message par fakbill » 04 janv. 2010 09:37

Vérification faite, const c'est du C89 donc tout compilo digne de ce nom doit connaitre *en C*.

Les tableaux de taille définie par une variable, c'est du C99.
http://nicolasj.developpez.com/articles/c99/#LIV-F (il y a une typo dans leur page. Lire C90 et non C99).
Il est donc certain que certains vieux compilo ne vont pas connaitre.
A ce que je comprends, c'est juste une nouvelle façon légère d'écrire de l'aloc dynamique.
Le compilo ne cherche pas à connaitre la valeur de la variable à la compil pour alouer statiquement (ce qui est sans espoir dans le cas général (puisque c'est équivalent au pb de l'arret)).

Attention, le mieux serait d'aller vérifier directement dans le pdf de la norme du C90 et du C90..bref ça devient très technique.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

amrani

Re: tableaux et pointeurs

Message par amrani » 09 janv. 2010 03:55

Bonjour , j'ai un petit doute concernant la lecture et écriture en même temps dans un fichier binaire
je résume mon problème dans un exemple
j'ai un tableau texte comme suit

nom-1 prenom-1 B12345
nom-2 prenom-2 A12345
nom-3 prenom-3 D12345
nom-4 prenom-4 C12345

je convertit mon fichier texte en un fichier binaire

je creé un autre fichier binaire (indéxé) comme suit,:
FILE *FLBI;
FLBI=fopen("cin.bin","r+w); //ouverture du fichier en mode lecture et écriture en même temps

//cin index

B12345 0
A12345 1
D12345 2
C12345 3

après je veux trier ce dernier fichier binaire selon la case cin, le tri se fera dans le fichier sans utilier de tableau, c'est la que ça me pose problème,
voici ce que j'ai trouver comme solution:


Struct enregiscin a, b // la structure enregiscin contient un "char cin[10]" et un "int "


for(i=0;i<4;i++)
fseak(FLBI, i*sizeof(enregiscin),SEEK_SET) ;// positionnement à la ligne i
fread(&a , sizeof(enregiscin),1,FLBI); // lecture de la ligne i de FLBI et mise de cette ligne dans &a
fseak(FLBI, (i+1)*sizeof(enregiscin),SEEK_SET) ;// positionnement à la ligne i+1
fread(&b,sizeof(senregiscin),1,FLBI); // lecture de la ligne i+1 de FLBI et mise de cette ligne dans &b


// donc en gros c'est comme si je mets "a=T[ i]" et "b=T[i+1]"

res=strcmp(a.cin , b. cin);
if res>0
{fseak(FLBI, i*sizeof(enregiscin),SEEK_SET) ;// positionnement à la ligne i
fwrite(&b , sizeof(enregiscin),1,FLBI); // ecriture de &b et mise dans la ligne i de FLBI
fseak(FLBI, (i+1)*sizeof(enregiscin),SEEK_SET) ;// positionnement à la ligne i+1
fwrite(&a,sizeof(senregiscin),1,FLBI); // ecriture de &a et mise dans la ligne dans i+1
}


bon jusqu'a ici est ce correct ou bien il y'a risque que dans "fwrite(&b , sizeof(enregiscin),1,FLBI);" &b écrase &a ?
Merci

Répondre