mikrocontroller.net

Forum: PC-Programmierung Hilfe zu memcpy


Autor: zorry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwei unterschiedlich große Array vom Typ unsigned char.
Das eine Array ist 100 groß und das andere nur 20 groß.
Nun möchte ich vom großen Array nur die ersten 20 Werte mit dem kleinen 
Array vergleichen. Wenn Inhalt ungleich ist, das soll was getan werden.
Ich hab mich mal erkundigt. Dafür gibt es die Funktion memcmp.

unsigned char array1[100];
unsigned char array2[20];

Wie müsste ich da die memcmp Funktionen anwenden?

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(memcmp(array1, array2, 20))
{
    printf("ungleich");
}
else
{
    printf("gleich");
}
MfG mark

Autor: manpage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin mal so frei aus der Manpage zu memcmp zu zitieren:

<zitat>
NAME
       memcmp - compare memory areas

SYNOPSIS
       #include <string.h>

       int memcmp(const void *s1, const void *s2, size_t n);

DESCRIPTION
       The memcmp() function compares the first n bytes of the memory
       areas s1 and s2.  It returns an integer less than, equal  to,
       or  greater  than zero  if  s1  is  found, respectively, to be
       less than, to match, or be greater than s2.

RETURN VALUE
       The memcmp() function returns  an  integer  less  than,  equal 
       to,  or greater than zero if the first n bytes of s1 is found,
       respectively, to be less than, to match, or be greater than the
       first n bytes of s2.
</zitat>

HTH

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: zorry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char array2[20];

PT_CHANNEL  ptCHANNEL;

if(memcmp(&ptCHANNEL->data,array2,20))


Es funktioniert nicht. Programm geht bei mir nicht in die IF Bedingung.

Autor: Gerry E. (micky01)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zorry schrieb:
>
> unsigned char array2[20];
> 
> PT_CHANNEL  ptCHANNEL;
> 
> if(memcmp(&ptCHANNEL->data,array2,20))
> 
> 
>
> Es funktioniert nicht. Programm geht bei mir nicht in die IF Bedingung.

Was soll denn das heißen?

Dann mach mal Klammern um ptCHANNEL->data und probier nochmal!

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zorry schrieb:

> Es funktioniert nicht. Programm geht bei mir nicht in die IF Bedingung.

Warum sollte es, sind die beiden Inhalte denn verschieden?

Will sagen: Hast du genau gelesen, was der Rueckgabewert von memcmp ist?

Autor: zorry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke es funzt jetzt!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.