Array und dann bestimtme Ausgabe machen..



  • Hallo Leute,
    ich habe folgende Frage bzw. Aufgabe. Habe mir natürlich schon meine Gedanken dazu gemacht, aber ich hoffe auf eine Verbesserung poder Anregungen.

    Es geht um folgendes:

    Ich habe ein Array (z.b 100 Felder). Aus diesem lese ich jeweils ein byte bzw. einen Wert raus. nun möchte ich halt nach einem bestimmten wert gucken z.b. 0x10 bzw. immer nach dem erste,zweiten und dritten byte und daraufhin eine ausgabe machen, sonst soll im mom nix passieren.

    habe mir überlegt mit einer for-schleife und anschließend mit mehreren if-abfragen.d.h ich habe die for schleife für die durchläufe des ganzen feldes. anschließend habe ich strcat(arrayfeld, "text") und will dann jetzt halt den text in ein feld ausgeben.

    wie könnte evtl der code vereinfacht werden, wenn ich nicht gleich 3if-abfragen verschachteln will.

    für eure hilfe wäre ich sehr dankbar..



  • Poste mal den Code, so wie du ihn dir vorstellst, dann kann ich's mir besser vorstellen.
    Aber folgendes könnte durchaus hilfreich sein: man: strnchr, man: memcmp, man: memcpy usw.



  • Ohne wirklich zu wissen, worauf du hinaus willst: du möchtest scheinbar nur eine Ausgabe machen, wenn du eine bestimmte Byte-Folge findest. Dann brauchst du nicht drei verschachtelte if's, sondern da reicht ein if mit drei Bedingungen. Aber wie mein Vorredner schon sagte, zeig mal Code! 🙂



  • also, es geht um nicht direkt nacheinanderfolgende bytes..sondern halt um 3bytes, die an verschiedenen stellen liegen können..ausserdem soll ja unterschiedliche sachen ausgegeben werden je nach byte-wert..

    auszug:

    for (index=0 ; index <= 76 ; index=index+4)  {
    
    		if (Read[index] == 0x10)  {
    			strncat(Read_Txt[index], "test", 50);
    		} else
    			{
    				strncat(Read_Txt[index], "aaaaaaaaaaa ", 50);
    			}
    
    		if (Read[index+1] == 0x11)  {
    			strncat(Read_Txt[index], "Tür", 50);
    		} else
    			{
    				strncat(Read_Txt[index], "bbbbbbbbbbb ", 50);
    			}
    
    		if (Read[index+2] == 0x0b)  {
    			strncat(Read_Txt[index], "offen ", 50);
    		} else
    			{
    				strncat(Read_Txt[index], "ccccccccccc ", 50);
    			}
    
    		//Read_Txt_temp = Read_Txt;
    		output(Textfeld, Read_Txt_temp);
    

    dies ist der code..


Anmelden zum Antworten