Pointer Daten rausholen

OP #787442
Lesenswert?
• ▲
▼
Hallo zusammen,

hab folgendes Problem:
1
uint8_t checkNumber(unsigned char* data)
2
{
3
  uint8_t tmpShowNumber[3];
4
  uint8_t foundMinus=0;
5
  for(unsigned char i=0; i<15;i++)
6
  {      
7
    if(foundMinus)
8
    {
9
      tmpShowNumber[0] = data[i];
10
      tmpShowNumber[1] = data[i+1];
11
      tmpShowNumber[2] = data[i+2];
12
      tmpShowNumber[3] = '\0';
13
      
14

15
      uart_putc(data[i]);  
16
      uart_putc(tmpShowNumber[0]);  
17
                    
18
      break;
19
    } 
20
    if(data[i] == '-') 
21
    {      
22
      foundMinus = 1;  
23
    }
24
  }
25
  return 0;
26
}

Wieso unterscheiden sich uart_putc(data[i]); und 
uart_putc(tmpShowNumber[0]);?

Bei data[i] kriege ich '2' und bei tmpShowNumber[0] kriege ich nur Müll.
Was mach ich falsch?
Gast #787468
Lesenswert?
• ▲
▼
Du definierst ein Array mit 3 Elementen:

  uint8_t tmpShowNumber[3];

und schreibst 4 Werte hinein:

      tmpShowNumber[0] = data[i];
      tmpShowNumber[1] = data[i+1];
      tmpShowNumber[2] = data[i+2];
      tmpShowNumber[3] = '\0';

Könnte, aber muss nicht der Grund sein. Auf jeden Fall solltest du das
korrigieren.

Nebenbei: Hat es einen bestimmten Grund, warum du manchmal unsigned
char und manchmal uint8_t benutzt?
OP #787495
Lesenswert?
• ▲
▼
Ok das war das Problem ... danke.

Hab jetzt nur doch das Problem:
1
  uint16_t number1=0;
2

3
  tmpShowNumber[0] = '2';
4
  tmpShowNumber[1] = '3';
5
  tmpShowNumber[2] = '4';
6
  tmpShowNumber[3] = '\0';
7

8
  number1 = atoi(tmpShowNumber);
9

10
  char buffer[7];
11
  itoa( number1, buffer, 10);              
12

13
  uart_putc(buffer);

Wieso bekomme ich bei uart_putc(buffer); im Terminal < (in Hex 3C) zu 
sehen? Und nicht 234?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren