Pb unsigned char
Livia
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je debute en c.
Je recois des donnees d'une liaison rs232 que je mets dans une variable unsigned pour le traitement.
quand je teste si la variable est vide, ca me repond tout le temps non pourquoi?
tampon est toujours plein, pourquoi ??
meme si je ne recois pas de donnees (au depart)
tampon n'est pas vide
comment verifier la taille du tampon ?
ou et le reinitailiser a vide
merci
je debute en c.
Je recois des donnees d'une liaison rs232 que je mets dans une variable unsigned pour le traitement.
quand je teste si la variable est vide, ca me repond tout le temps non pourquoi?
//declaration unsigned char tampon[256]; unsigned char data[256]; int size; UARTRead(portrs232, data, size); //lecture de la donnee rs232 memcpy(tampon, data, size); //copy dans le tampon int tamponRempli = sizeof(tampon); // taille du tampon if(tamponRempli <=0) { //traitement si vide; printf("tampon vide"); } else { //traitement si plein; printf("tampon plein"); //vider le tampon //comment vider ? }
tampon est toujours plein, pourquoi ??
meme si je ne recois pas de donnees (au depart)
tampon n'est pas vide
comment verifier la taille du tampon ?
ou et le reinitailiser a vide
merci
A voir également:
- Pb unsigned char
- Coco char - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Convertir char en int c ✓ - Forum C
- Char(10) excel francais ✓ - Forum Excel
- [C]- convertir char en int ✓ - Forum C
2 réponses
sizeof(tampon) vaut la taille du tableau soit 256.
Il faut savoir qu'en C, dès lors que tu déclares une variable elle n'est pas vide. Elle est soit initialisée à 0 automatiquement, soit elle contient n'importe quelle valeur, soit elle contient la valeur que tu as mise.
En revanche, ce que tu peux faire, c'est créé un compteur qui sera incrémenté dès que tu rajouteras une valeur au tableau.
Attention, size n'est pas initialisé...
Cdlt,
Il faut savoir qu'en C, dès lors que tu déclares une variable elle n'est pas vide. Elle est soit initialisée à 0 automatiquement, soit elle contient n'importe quelle valeur, soit elle contient la valeur que tu as mise.
En revanche, ce que tu peux faire, c'est créé un compteur qui sera incrémenté dès que tu rajouteras une valeur au tableau.
Attention, size n'est pas initialisé...
Cdlt,
Merci
je viens de comprendre
size est normalement rempli par la fonction UARTRead
j'initailise ma variable tampon maintenant
et je vais tester si la premiere valeur vaut 0
si !=0 je traite
et remise a 0
merci bcp
je viens de comprendre
size est normalement rempli par la fonction UARTRead
j'initailise ma variable tampon maintenant
unsigned char tampon[256] = {0}
et je vais tester si la premiere valeur vaut 0
si !=0 je traite
et remise a 0
memset(tampon, 0, 256);
merci bcp
size est normalement rempli par la fonction UARTRead
Je ne connais pas cette fonction, mais avec l'appel UARTRead(portrs232, data, size); size ne pourra pas être modifié. Il faut passer par un pointeur.
et je vais tester si la premiere valeur vaut 0
C'est une possibilité.
As-tu vraiment besoin de tout remettre à 0 (memset(tampon, 0, 256);) le '\0' indique la fin d'une chaîne. Donc *tampon=0; suffirait (ou tampon[0]=0;)
Je ne connais pas cette fonction, mais avec l'appel UARTRead(portrs232, data, size); size ne pourra pas être modifié. Il faut passer par un pointeur.
et je vais tester si la premiere valeur vaut 0
C'est une possibilité.
As-tu vraiment besoin de tout remettre à 0 (memset(tampon, 0, 256);) le '\0' indique la fin d'une chaîne. Donc *tampon=0; suffirait (ou tampon[0]=0;)