globale Variable zeichenweise auslesen



  • ich hab das mit dem offset probiert mit :
    sscanf(string1[1], "%1X", &string2);
    sscanf(string1[2], "%1X", &string2);

    ich dachte so mach ich das. das man da string1+i schreiben muss hät ich jetz nicht erwartet.

    tausend dank!



  • Willst du denn immer nur ein Zeichen lesen? Das was du dort im String1 hast ist doch eine ganze Hexadezimalzahl oder sind das mehrere einstellige, die nebeneinander liegen?



  • Es gibt ja auch einen großen Unterschied zwischen char und char*

    Mit string1[1] bekommst du auch ein char . Das Zeichen an der 2. Stelle
    Mit string1+1 bekommst du ein char* . Den Zeiger auf das Zeichen an 2. Stelle.



  • It0101 schrieb:

    Willst du denn immer nur ein Zeichen lesen? Das was du dort im String1 hast ist doch eine ganze Hexadezimalzahl oder sind das mehrere einstellige, die nebeneinander liegen?

    ja ich will alles extra, weil dann die umrechnung in dual für mich sehr einfach wird.

    Es gibt ja auch einen großen Unterschied zwischen char und char*

    Mit string1[1] bekommst du auch ein char. Das Zeichen an der 2. Stelle
    Mit string1+1 bekommst du ein char*. Den Zeiger auf das Zeichen an 2. Stelle.

    bei string1[1] meckert der compiler wenn ichs auslesen will und mit string1+i funktioniert alles wunderbar.



  • xoosksicskoox schrieb:

    bei string1[1] meckert der compiler wenn ichs auslesen will und mit string1+i funktioniert alles wunderbar.

    Scanf will vermutlich eine Variable vom Typ Char*.

    String1[1] ist aber nur ein Zeichen, also "char"

    string1+1 ist ein char*, nur halt im vergleich zu string1 um sizeof(char) verschoben.



  • DirkB schrieb:

    Es gibt ja auch einen großen Unterschied zwischen char und char*

    Mit string1[1] bekommst du auch ein char. Das Zeichen an der 2. Stelle
    Mit string1+1 bekommst du ein char*. Den Zeiger auf das Zeichen an 2. Stelle.

    xoosksicskoox schrieb:

    bei string1[1] meckert der compiler wenn ichs auslesen will und mit string1+i funktioniert alles wunderbar.

    Das ist klar, dass string1[1] nicht funktioniert wenn an der Stelle ein char* erwartet wird.
    Hast du das Verstanden was ich geschrieben habe?
    Den Unterschied zwischen char und char* ?
    Das ist wichtig in C.



  • jopp



  • xoosksicskoox schrieb:

    ja ich will alles extra, weil dann die umrechnung in dual für mich sehr einfach wird.

    Das ist doch kein ernsthafter Grund 😕



  • cooky451 schrieb:

    xoosksicskoox schrieb:

    ja ich will alles extra, weil dann die umrechnung in dual für mich sehr einfach wird.

    Das ist doch kein ernsthafter Grund 😕

    wieso nicht? ich hab ein 64 bit langen code, gegeben halt als HEX. wenn ich alles in 4Bit Schritte umwandel, is das extrem einfach wie ich finde. sicherlich gibts da noch andere wege



  • xoosksicskoox schrieb:

    sicherlich gibts da noch andere wege

    Ja:

    #include <stdlib.h>
    #include <stdio.h>
    
    void print_bin(long val)
    {
      int i = 0;
      while ((val >> ++i))
        ;
      while (i)
        printf("%i", (val >> --i) & 1);
    }
    
    int main()
    {
      const char *str = "E068A";
      print_bin(strtol(str, 0, 16));
    }
    

Anmelden zum Antworten