Ich versuche, einen Code zu schreiben, der eine gegebene Zeichenfolge mit einem Zeiger durchläuft, um es zu analysieren.Wie bekomme ich einen Zeiger zurück von einer Void-Funktion, nachdem es durch einen String-Zeiger iteriert
Der ursprüngliche Code, den ich schrieb, funktionierte gut, aber es war ... redundant, also versuchte ich, es in einen Funktionsanruf zu machen, um es prägnanter zu machen. Hier ist, was ich habe:
char inputArray[300];
char buffer[300];
char username[100];
char password[100];
char name[100];
int i=0;
void repeat(char *to)
{
while(*to!='=')
{
to++;
}
}
void array(char *mm,char *tt)
{
i=0;
while(*tt!='+')
{
mm[i]=*tt;
tt++;
i++;
}
}
int main()
{
printf("give me the shit in this fashion: username=?+password=?+real=?\n");
scanf("%s",inputArray);
strcpy(buffer,inputArray);
char *tok=buffer;
repeat(tok);
tok++;
array(username,tok);
repeat(tok);
tok++;
array(password,tok);
tok++;
repeat(tok);
tok++;
array(name,tok);
}
Aus irgendeinem Grund wird es mir nicht um den Zeiger Array zurückgeben tok, wo es von der vorherigen Funktionsaufruf aufhörte. Warum das? es verhält sich so, als würde der Zeiger nach dem Aufruf von vorne beginnen.
ist es normal, dass ich einen Segmentierungsfehler bekomme, nachdem es das erste Zeichen durchlaufen hat? – harekuin
@harekuin: Nein, probieren Sie Beispielcode. und geben Sie die richtige Zeichenfolge ein und fügen Sie die Überprüfung auf Fehler im Array hinzu und wiederholen Sie, um nicht außerhalb der Grenzen zu gehen. –
Vielen Dank für den wirklich beschreibenden Code! : D – harekuin