Erreur en langage C

chicinho95 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
chicinho95 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un problème depuis un moment avec mon programme, j'essaye désespérément de trouver la solution tout seul, mais j'ai un problème avec la strncpy()
le but de l'appel de cette fonction est de pouvoir recopier dans ma chaine de caractère s les 8 bits de donnée du portA puis attendre, puis je recopier les 8 bits de donnée du portA a la suite de la premiere chaine
et je voudrais qu'à la fin ma chaine s ait bien recue les 128 bits de données.
si quelqu'un pouvait m'aider.
merci d'avance

void ecrit(unsigned char s)

{
int M[128];
PortM = Port_M && (128+8+1);
int i;
for(i=0; i<16; i++)
{
strncpy(PortA,*s[(i*8)+1], 8);
PortA = Octet(M);
PortB = Port_B && i;
PortB = Port_B && (16+i);
PortB = Port_B && i;
}
}

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
déjà s n'a pas le bon type.
Ensuite, tu utilise strncpy à l'envers, c'est destination, source le sens. (comme destination=source)
http://www.manpagez.com/man/3/strncpy/
0
loupius
 
Je ne pense pas que la fonction 'strncpy' soit la fonction adaptée à ton problème.
C'est une fonction destinée à ajouter des octets non nuls.... vu l'erreur ?
strncpy(PortA,*s[(i*8)+1], 8); En plus de l'erreur indiquée par CharSnipeur qui a toujours raison, tu lui dis (à la fonction) de copier 8 octets... et non pas 8 bits!
Le plus simple est de copier le port octet par octet dans un tableau. De toute façon une fois ta chaîne remplie, tu ne pourras pas la traiter en tant que chaîne car si un octet est nul, c'est la fin de la chaîne.
Mais ce n'est qu'un simple avis, d'autant plus que j'ai bien du mal à comprendre tes dix lignes de programme (par exemple: unsigned char s et quelques lignes plus loin: *s[(i*8)+1], cela n'a aucun sens !!!).
Bonne continuation.
0
chicinho95 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour vos réponses.
si je vous dis que j'ai déja créer d'autres fonctions, qui permettent la récupération d'une chaine de bits et qui les transforment en octets et inversement.
c'est pour cela qu'un moment dans mon programme je fait appel à la fonction "octet" créée précédemment.

En fait, je voudrais savoir s'il y a un équivalent à une fonction qui récupère 8 bits de données sur une chaine ( les transforment en octet grâce à l'appel de ma fonction octet) puis les copient sur une autre chaine2 de 128 bits, incrément de 8 cette chaine2, récupère encore 8 bits et les envoi sur cette chaine2 et ainsi de suite..
Je veux bien faire une boucle avec l'appel de la fonction strncpy mais je pense que la chaine va directement se recopier sur l'autre sans passer par la fonction "octet" que j'ai créé.
merci d'avance.
0