www.mikrocontroller.net

Forum: Compiler & IDEs Inhalt vom Array abfragen


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo! Ich brauche mal eben schnell ne Lösung für ein Problem.
Ich habe ein Array

test[1] = '2';

Dieser Inhalt kann verändert werden.

test[1] = '3';

test[1] = '0';

test[1] = '4';

test[1] = '1';

etc...
Jetzt soll ich mit einer Programmieranweiung abfragen, ob der Array 
kleiner als 2 ist!
Wie mach ich das am besten ?

test[1] < 2;

zu programmieren funktioniert leider nicht!

MFG Frank

Autor: Bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich das richtig vermute ist das ein char feld?!

Dann knnst du folgendes machen if (test[1] < 50)  ....

besser if (48 == test[1] || 49 == test[1]) ...

schau dir mal die ASCII Tabelle an ...

http://de.wikipedia.org/wiki/ASCII-Tabelle



Gruß

Bastian

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(test[1] < '2')
{
    //Anweisungen
}
sollte funktionieren. Die ASCII-Zeichen für die Ziffern stehen in der 
ASCII-Tabelle direkt hintereinander, beginnend mit 0x30 für '0', dann 
0x31 für '1' usw... Für den Compiler ist '2' nichts anderes als 0x32, 
und damit kann man dementsprechend größer-kleiner-gleich-Abfragen machen 
wie mit einer "normalen" Zahl.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jou alles klar !
Danke für die Hilfe !!

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !
Ich habe noch eine weiter Frage zu Arrays.
Abgenommen ich habe mein Array
char test[256];

Den Inhalt von test[] möchte ich gerne an einen zweiten Array neu[] 
direkt übergeben.

char neu[256];

Wie realisiere ich den so etwas ?
So wird es wohl nicht funktionieren !!!

neu = test;

Gibt es überhaupt so eine Möglichkeit ?

Danke schon mal für Eure freundliche Unterstützung !!!

Mfg Frank

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das Array einen Nullterminierten String enthält, dann helfen Dir 
die Funktionen aus der string.h (z.B. strcpy) dabei. Ist das nicht der 
Fall, dann musst Du das ganze selbst in einer Schleife erledigen (oder 
dafür sorgen, dass Dein Array am Ende eine 0 enthält).

Autor: Sardaukar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
memcpy( *dest, *src, count );

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Autsch, klar! memcpy ist Dein Freund...
#define ARRAY_SIZE 256

char array1[ARRAY_SIZE], array2[ARRAY_SIZE];

for(unsigned int i = 0; i < ARRAY_SIZE; i++)
    array2[i] = array1[i];
Das wäre die "Selfmade"-Methode...

Autor: Dominik Riebeling (bluebrother)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank wrote:
> neu = test;

Wenn du nur eine Referenz auf das Array haben willst, also keine Kopie, 
kannst du das mit pointern machen. Und dann funktioniert das ziemlich 
ähnlich wie in der Zeile:
char alt[256];
char* neu;

neu = alt;
Du musst dann halt auf den Inhalt über den Pointer zugreifen, also 
alt[0] ist dann über *neu anzusprechen. Wenn du jetzt Werte in neu 
veränderst wirkt sich das aber auch auf alt aus.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dominik Riebeling wrote:

> Du musst dann halt auf den Inhalt über den Pointer zugreifen, also
> alt[0] ist dann über *neu anzusprechen.

Du kannst aber auch ganz normale Array Syntax benutzen:
   char alt[256];
   char* neu;

   neu = alt;
   neu[0] = 5;    // greift auf alt[0] zu


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Beiträge ...
Jetzt bin ich wesentlich schlauer !!!
Mfg Frank

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.