subString für char?

vaporizer

Erfahrenes Mitglied
Hallo
ich hätt ein paar Fragen:
1.
was ist wenn eine Variable mit einem oder zwei "*" deklariert ist?
zB.: char *dest
oder: char **argv
2.
ich speichere in *dest eine ip 999.999.999.999
gibt es da so eine Art subString(java) funktion,
um jedes einzelne Zeichen zu analysieren?
Wenn ja welche?
Greetz from Vaporizer
 
1. Dann handelt es sich um einen Zeiger bzw. um einen Zeiger auf einen Zeiger.

2. Da es sich dabei vermutlich um ein char-Array handelt, kannst du jedes einzelne Zeichen mit dest[n] ansprechen. Es gibt aber auch zum Beispiel die Funktion strstr() zum Finden eines Substrings. Vielleicht sind für dich aber die Standardstrings mit ihren Funktionen interessanter (std::string).
 
Noch ne kleine Anmerkung, die zwei **, bzw. der "Zeiger auf einen Zeiger" wird meistens für ein zweidimensionales dynamisches Array benutzt. In dem Fall aus char, also ein Array aus Arrays aus char sprich ein Array aus Strings (oder eben das was man in Classic-C unter Strings versteht). Bei den Dingern kannst du auch auf einzelne Bytes zugreifen: argv[0][0] ist das erste Byte im ersten char-Array.
 
also so ganz hab ich das noch nicht verstanden,
ich hab in meiner main methode folgendes:
Code:
int main(argc, char **argv)
{
	char *ip;
	int port;
	ip = argv[1];
	port = argv[2];
}
die argumente ip und port werden übergeben
nun will ich die ip aufteilen
habs mit argv[1][0] versucht für das erste Zeichen
und argv[1][1] für das zweite,
da kommen aber irgendwelche werte.
kann mir jemand helfen?
 
Wie irgendwelche Werte? Zahlen? Das ist logisch. Wenn du das argv[1][0] so ansprichst wird ein char geliefert, das nach Definition eine Zahl im Bereich von -127 bis 128 ist. Die Zuweisung von Zeichen laut ASCII Tabelle wird da nicht berücksichtigt. Nichts desto trotz kannst du damit arbeiten und mit ASCII Zeichen vergleichen bzw. andere Werte einsetzen. Probier zum Bsp. mal das:

Code:
int main(argc, char **argv)
{
        printf(argv[0]);
        argv[0][0] = 'A';
        printf(argv[0]);
}

Was soll eigentlich diese Zeile: port = argv[2];? Damit weißt du der Ganzzahl port die Adresse von argv[2] zu, was prinzipiell zwar geht, nur nützt es dir hier nix (bzw. es führt ohne explizites Casten zu einem Fehler beim Compilieren).
 
Was soll eigentlich diese Zeile: port = argv[2];?
ich übergebe beim starten des programmes 2 argumente
die ip = argv[1]
und den port = atoi(argv[2])

und ja du hast recht beim compilieren spricht er eine Warnung aus,
nur eine Warnung keinen error.
gibt es eine bessere Möglichkeit das zweite Argument zu übergeben?
 
Zuletzt bearbeitet:
Zurück