Barcode Programmierung + Stringfunktionen



  • Hallo Ihr da alle im Forum,

    bin der Neue :p .
    Habe von einiger Zeit in C programmiert, nur seit 3 Jahren programmiere ich in VB script, Asp und allgemein Datenanwendungen in Access.
    Nun muss ich einen Barcode Scanner programmieren, der natürlich in C geschrieben wird. Back to the oldschool. Nur habe ich etwas Anfangsschwierigkeiten und hoffe ein paar Ratschläge von Euch zu erhalten.

    Es geht darum das ich ein Char Array habe und dieses Prüfen muss auf eine vorhandene Zeichenkette:

    Bsp.:

    char *MCAVergleichOriginal = input_buffer;
    char *Vergleich ="ABC";
    
    if (strstr(MCAVergleichOriginal, Vergleich ))
     {
      sprintf(bcode, "%s", input_buffer );
     }
    else
     {
     sprintf(  bcode, "ABC%s", input_buffer );
     }
     sub_cmd = SUB_CMD_READ_MENGE;
    

    Beim Kompillieren erhalte ich immer eine Fehlermeldung, wenn ich StrStr benutze. Nicht vorhandener Prototype... Bibliothek string.h ist aber eingebunden. 😕 Strchr kann ich benutzen, sucht aber nur ein Zeichen im String. Die Buchstaben ABC sollen in dieser Reihenfolge im "ABCVergleichOriginal" vorhanden sein.

    Ich denke ich muss das Array über eine Schleife durchlaufen und nach Alphazeichen (isalpha()oder so) durchlaufen und dann die alpha Zeichen in eine extra str Variable schreiben. Dieses dann über strcmp mit meiner "vergleichs" Variable vergleichen ? Könntet Ihr mir da ein Beispiel zeigen.
    Irgend wie stelle ich mich zu blöd an. Weiss nicht mehr, wie ich meine Variable durchlaufe und Zeichen für Zeichen prüfe,.... etc-

    Ich dank euch im Voraus für Eure Hilfe.

    Gruß

    Barcode_Örkel



  • Syntax:
    #include <string.h>
    char *strstr( const char *str1, const char *str2 );

    The function strstr() returns a pointer to the first occurrence of str2 in str1, or NULL if no match is found.



  • Danke, aber was und wie die Funktion strstr arbeitet weiss ich ja, aber leider kann ich die bei mir nicht benutzen. Wieso weiss ich nicht, missing prototype...
    erhalte ich als compile Fehler.

    Möchte eigentlich nur das Array durchlaufen, alle Alphazeichen löschen und ABC vorne ranhängen. Das ist grob das Ziel der Aufgabe. Bin nun dabei es mit StrChar vorzubereiten sieht bisher so aus :

    case SUB_CMD_READ_CODE:
       if( sub_prg == SUB_PRG_BCTEST )
             {
              sprintf( display_buffer, "%s", input_buffer );
             }
           else
             {
             char *ABCVergleichOriginal = input_buffer;
                 char *VarOhneAlpha;
             char *VarAlpha;
             int i;
    
             if (strchr(MCAVergleichOriginal, 'A'))
            {
                 sprintf(bcode, "%s", input_buffer );
            }
             else
            {
            for (i=0;i<=strlen(MCAVergleichOriginal);i++)
                    {
                if ( !isupper(MCAVergleichOriginal[i])|| !islower(MCAVergleichOriginal[i]))
                     {
                VarAlpha[i]= MCAVergleichOriginal[i];
                 }
                else
                 {
                VarOhneAlpha[i]= MCAVergleichOriginal[i];
                 }
                 }
                  }
                sprintf(bcode, "ABC%s", VarAlpha );
                sub_cmd = SUB_CMD_READ_MENGE;
             break;
             }
    
    Vielleicht sieht ja einer einen Fehler, Prüfe bisher nur ob das Zeichen A im Char Array vorhanden ist. Leider ist das Ergebnis immer Null.
    Vielleicht hat ja einer eine Idee, wie ich es hinbekommen kann ?
    
    Priorität:
    Entfernen der Alphazeichen des Char Arrays,
    Vorab - Prüfen auf vorhanden sein von "ABC" ohne Function aus string.h stsstr
    
    DANKE und Gruß 
    
    Barcode Örkel
    


  • Was für einen Compiler verwendest du denn???
    der folgende Quellcode sollte eigentlich bei dir laufen:

    #include <string.h>
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
        char *String = "hallo du Welt";
        char *SuchString = "du";
        char *pResult;
        int iResult;
        pResult = strstr(String, SuchString);
        iResult = (int)(pResult - String + 1);
        printf( "Der gesuchte String steht an Stelle: %d\n",iResult );
        return 0;
    }
    


  • Danke @Rekursiv,

    habe Keil Compiler ! Sobald ich die Function StrStr verwende, kommt die Meldung missing Function strstr - Prototype.

    Habe es mit deinem Code probiert und auch da kam leider diese Meldung.
    Muss meiner Meinung nach alles programmieren.

    Leider komme ich noch nicht richtig weiter, s.o. Code !

    Danke dennoch

    Gruß Barcode Örkel



  • Original erstellt von Barcode_Örkel:
    habe Keil Compiler

    auf welcher hardware entwickelst du? strstr() ist zwar standard, aber bei vielen Compiler für uCs sind die StringFunktionen arg beschnitten...

    kanns sein, dass du auf 8051, C167 oder ARM entwickelst?


Anmelden zum Antworten