Benutz am besten C - Strings:
Das sind array's of char welche mit NULL terminieren.
z.B.:
C:
char str[6] = {'H', 'a', 'l', 'l', 'o', '\0'};
das geht auch folgendermaßen:
C:
char str[6] = "Hallo"; // Die Null wird am Ende von "Hallo" automatisch eingefügt
Wenn du weisst was genau im Array steht, kannst du den String auch so definieren:
auf die einzelnen [Char] - Werte des Strings kannst du über den Index zugreifen
Der Index geht von 0 - (Maxlen - 1) hier also 0 - 5, sollte dir auch aus Java bekannt sein:
z.B gilt
Jetzt gibt es noch etwas zu wissen:
Die Werte die ein [char] annehmen kann also 'A', 'B' .... werden intern als Zahlen behandelt, ist auch klar, da die einzelnen Zeichen binär gespeichert werden und später erst als Zeichen interpretiert werden.
[char] ist ein Datentyp der Größe 1 Byte und kann damit Werte zw. 0 - 255 annehmen, diese Werte sind für die Ausgabe entsprechend kodiert.
Compile am besten das hier, dann siehst du, was ich meine:
C:
#include <stdio.h>
int main()
{
int i = 0;
for(i = 0; i<=255; i++)
printf("%i: %c\n", i, (char)i);
getchar();
return 0;
}
Mit dem Wissen sollte nun verständlich sein, wie man aus einem String Zahlen filtern und nach integer übertragen kann.
Alle Zahlen aus str filtern:
C:
void getNums(char str[])
{
int pos = 0;
int newpos = 0;
while (str[pos])
{
if (str[pos] >= '0' && str[pos] <= '9')
{
str[newpos] = str[pos];
newpos++;
}
pos++;
}
str[newpos] = 0; // Ende des reinen Zahlenstrings markieren
}
Das Ergebnis steht nach dem Aufruf in dem übergebenen String.
Ziffer eines Strings nach Integer umwandeln:
Idee:
C:
int val = 0;
char str[] = "1"
val = str[0] - '0'; // val == 1
Ich hab hier noch ne Methode zum umwandeln einer zusammenhängenden Zahl in einem String:
Wichtig ist halt hier, das eine Zahl wie ein Polynom zu betrachten ist und die einzelnen Koeffizienten des Polynoms sind die in dem String enthaltenen Ziffern:
C:
int strToInt(char* str)
{
int intVal = 0;
int pos = 0;
while (str[pos] != 0)
{
if((str[pos] >= '0') && (str[pos] <= '9'))
{
intVal *= 10;
intVal += str[pos] - '0';
}
else
{
return intVal;
}
pos++;
}
return intVal;
}