Forum: Compiler & IDEs Inhalt vom Array abfragen


von Frank (Gast)


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

von Bastian (Gast)


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

von Johannes M. (johnny-m)


Lesenswert?

1
if(test[1] < '2')
2
{
3
    //Anweisungen
4
}
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.

von Frank (Gast)


Lesenswert?

Jou alles klar !
Danke für die Hilfe !!

von Frank (Gast)


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

von Johannes M. (johnny-m)


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).

von Sardaukar (Gast)


Lesenswert?

memcpy( *dest, *src, count );

von Johannes M. (johnny-m)


Lesenswert?

Autsch, klar! memcpy ist Dein Freund...
1
#define ARRAY_SIZE 256
2
3
char array1[ARRAY_SIZE], array2[ARRAY_SIZE];
4
5
for(unsigned int i = 0; i < ARRAY_SIZE; i++)
6
    array2[i] = array1[i];
Das wäre die "Selfmade"-Methode...

von Dominik R. (bluebrother)


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:
1
char alt[256];
2
char* neu;
3
4
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.

von Karl H. (kbuchegg)


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:
1
   char alt[256];
2
   char* neu;
3
4
   neu = alt;
5
   neu[0] = 5;    // greift auf alt[0] zu


von Frank (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.