Forum: Mikrocontroller und Digitale Elektronik sscanf


von tobias hofer (Gast)


Lesenswert?

Hallo

Ich verwende den hitec c compiler für dspic. Nun möchte ich für einen
umwandlung von hex to int aus einem string die sscanf funktion benutzen:

mein code sieht wie folgt aus:
1
char  Temp_Buffer[5];
2
char *pBuffer;
3
int nResult;
4
5
*pBuffer = &Temp_Buffer[0];
6
scanf(pBuffer,"%x",&nResult);

ich bekomme jedoch immer eine fehlermeldung:

>Error[500]   : undefined symbols:
>  _putch (D:\MPLAB\HTSOFT\dsPICC_9.60\lib\dspicc-sc.lib: >cgets.obj)_getche 
(D:\MPLAB\HTSOFT\dsPICC_9.60\lib\dspicc-sc.lib: cgets.obj)
>BUILD FAILED: Thu May 03 14:16:28 2007


vieleicht kann mir jemand weiterhelfen was ich falsch mache.

Besten Dank

Tobias

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du rufst scanf und nicht sscanf auf.

scanf erwartet Tastatureingaben an stdin, und das erwartet Zeichen über 
die von Dir nicht implementierte Funktion getche.

von Karl H. (kbuchegg)


Lesenswert?

Bei deinem Problem kann ich dir so nicht helfen.
Das sieht aus als ob in deinem Setup irgendwo der Wurm
drinnen ist (falls du im echten Code sscanf und nicht scanf
wie im Posting aufgerufen hast).

Aber:
sscanf ist für dieses Problem mit Kanonen auf Spatzen schiessen:
1
unsigned int HexToI( const char* Text )
2
{
3
  unsigned int Result = 0;
4
  char c;
5
6
  while( ( c = *Text++ ) != '\0' ) {
7
8
    if( c >= '0' && c <= '9' )
9
      Result = 16 * Result + c - '0';
10
11
    else if ( c >= 'A' && c <= 'F' )
12
      Result = 16 * Result + c - 'A' + 10;
13
14
    else if ( c >= 'a' && c <= 'f' )
15
      Result = 16 * Result + c - 'a' + 10;
16
17
    else
18
      return Result;
19
  }
20
21
  return Result;
22
}

  

von Scarface (Gast)


Lesenswert?

char  Temp_Buffer[5];
char *pBuffer;
int nResult;

pBuffer = &Temp_Buffer[0];//müsste so aussehn. *pBuffer = 
&Temp_Buffer[0];
scanf(pBuffer,"%x",&nResult);

Wieso wird in deinem Code *pBuffer mit der Adresse von Temp_Buffer, und 
nicht pBuffer mit der Adresse von Temp_Buffer geladen?
So verwendest in scanf immer noch die alte Adresse von pBuffer.

Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.