Langage c

cs_trinity666 Messages postés 4 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004 - 18 nov. 2004 à 16:39
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 18 nov. 2004 à 21:41
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

asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
18 nov. 2004 à 17:29
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
0
cs_trinity666 Messages postés 4 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 19:00
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
0
cs_trinity666 Messages postés 4 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 19:00
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
0
asmanur Messages postés 230 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 4 août 2005
18 nov. 2004 à 20:17
ca c le pt que j'ai compris mais la fonc que tu mets c var globale ou paramètres
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_trinity666 Messages postés 4 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 20:40
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
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 nov. 2004 à 21:41
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);
0
Rejoignez-nous