[C] ersten 5 Zeichen aus einem Char entfernen

  • Themenstarter Themenstarter Midyr
  • Beginndatum Beginndatum
M

Midyr

Hallo,

ich habe einen Char unbekannter Länge, das mit "Exec=" beginnt. Nun möchte ich alles, was nach "Exec=" kommt in ein anderes Array schreiben (inkl, evt. weiterer Gleichheutszeichen).

Gruß

Midyr
 
Hi,

du könntest die wirkliche char-länge bestimmen mit strlen() und dann eine for-Schleife machen die halt erst bei 5 anfängt und solange geht bis die länge erreicht ist.
 
Ich gehe davon aus du hast so etwas in der art:

C:
char *ExecStr;

// construct the string starting with "Exec="

Dann könntest du folgendes tun:
C:
const char *ExecStrStart  = "Exec=";

size_t ExecStrLen;
char *ExecCommand;

ExecStrLen = strlen(ExecStr);
if (ExecStrLen < strlen(ExecStrStart)) ;// impossible

ExecCommand = malloc(ExecStrLen + 1);
// error handling...

strcpy(ExecCommand, ExecStr + strlen(ExecStrStart));

printf(ExecCommand);

Wenn du allerdings einen String hast der mehrere argumente mit Werten getrennt durch "=" hast, kommst du
nicht am analysieren und umfrangreicherem aufteilen vorbei.

EDIT:
Ich habe jetzt auch das was bei dir in den Klammern steht gelesen.
Ich gehe davon aus, dass du einen String in folgender Art meinst: "Exec=Command Blah=Blub"
Das einfachste wäre in meinen Augen die Leerzeichen zwischen den Paren durch "\0" zu ersetzen.
In etwa so:
C:
size_t ExecStrLen;
size_t i;

ExecStrLen = strlen(ExecStr);

for (i = 0;i < ExecStrLen;++ i)
{
    if (ExecStr[i] == ' ') ExecStr[i] = '\0';
}

Nun brauchst du nur noch jedes paar durchgehen:
C:
size_t PairLen;
char *Pair;
Pair = ExecStr;
ExecStr += ExecStrLength;

while (Pair < ExecStr)
{
    PairLen = strlen(PairWalker);

    // do something with the pair
    printf(Pair);

    Pair += PairLen + 1;
}
 
Zuletzt bearbeitet:
Hi.
Wie sollte denn hier Pair < ExecStr sein?
Da hast du vollkommen recht da hab ich nicht ganz nachgedacht. Braucht man natürlich die Endadresse.

Außerdem wollte Midyr doch nur den String ab dem 5 Zeichen in einen anderen Kopieren:
c Code:
const char* exec = "Exec=bla,blue=123=irgendwas";

char ziel[200]; // oder dynamisch allozieren



strcpy(ziel, exec + 5);



Gruß
Jetzt wo ich nochmal gelesen habe ist mir das erst aufgefallen :) Das kommt davon wenn man alles nur
überfliegt und selbst reininterpretiert.
 
Zurück