Langage c

Signaler
Messages postés
4
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
bonjour
1)je ne comprend pas pourquoi ma fonction atobm ne compile pas; le compilateur dit kil ya 1 erreur ds while((c=fgetc(fp))!=EOF)){
mais je vois pas pkoi

2)j'ai ecrit des fonctions sans parametres ki fonctionnaient avec les variables globales du fichier ;g voulu rajouter des param avec le code identik le resultat n'est absolument plus le mm; alors g essayé le mm code en remplacant les affectations de tableaux par des modification par d pointeurs ca ne marche tjrs pas

char* atobm(const char *filename) {
int i,j,k;i=0;j=0;FILE* fp;int taille = 100000;
char *chaine = (char*)malloc(taille*sizeof(char));
unsigned char *tab=malloc(100000);char c;
fp=ouvrirLecture((char*)filename);
while((c=fgetc(fp))!=EOF)){
switch(c){
case '-':j++;break;
case '#':j++;set_bit(i,j,chaine);break;
case '\n': (i++)%12;break;
default:break; }

}
//chaine contient le contenu à ecrire dans le fichier
sprintf(chaine,"%s#define image37x12_width 37\n#define image37x12_height 12\nstatic unsigned char image37x12_bits[] = {\n ",chaine);
for(k=0;k<SIZE-2;k++){
//concatenation pour chaque élement du tableau ;de la chaine avec les octets et des virgules entre chaque octet
if(tab[k]==0){
sprintf(chaine,"%s%dx%d%d, ",chaine,0,0,0);
}
else {
sprintf(chaine,"%s%#.2x, ",chaine,tab[k]);
}
if((k+1)%12==0){
sprintf(chaine,"%s\n ",chaine);
}
//pour le dernier element on rajoute }; à la fin
if(tab[SIZE-1]==0){
sprintf(chaine,"%s%dx%d%d};\n",chaine,0,0,0);
}
else
sprintf(chaine,"%s%#.2x};\n",chaine,tab[SIZE-1]);

}
return chaine;
}

merci de votre aide

6 réponses

Messages postés
230
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
4 août 2005

pour ta première question une paranthèses en trop :
while((c=fgetc(fp))!=EOF)
euh sinon pour ta deuxième question j'ai pas trop bien compris ce que tu demandais mais le code n'est pas très clair
Messages postés
4
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004

merci
en fait j'avais ecrit dans un fichier des fonctions sans parametres qui modifiaent une variable globale

j'ai voulu generaliser ces fonctions en leur mettant un tableau en parametre
et le resultat n'etait plus le mm
alors que le code etait identique
je me demandais pkoi
Messages postés
4
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004

merci
en fait j'avais ecrit dans un fichier des fonctions sans parametres qui modifiaent une variable globale

j'ai voulu generaliser ces fonctions en leur mettant un tableau en parametre
et le resultat n'etait plus le mm
alors que le code etait identique
je me demandais pkoi
Messages postés
230
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
4 août 2005

ca c le pt que j'ai compris mais la fonc que tu mets c var globale ou paramètres
Messages postés
4
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
18 novembre 2004

en fait ct pas par rapport à cette fonction là la 2eme question ct pour savoir comment faire pour generaliser une fonction lui passer un tableau en parametres sans avoir de probleme d'appel par valeur
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
evite les variables globales, déclare une variable la ou elle doit etre visible

pour passer un tableau en parametre, tu es obligé (on peu pas passer de tableau en parametre) de passer un pointeur qui devra contenir l'adresse de son premier element

void func( char * );
ou
void func( char [] );

et

char s[20];

func(s);