Brauche Hilfe bei meiner Check Filepath Funktion

Hallo zusammen,

ich moechte ueperpruefen ob der Dateipfad richtig angegeben ist und falls das "/" am Anfang fehlt, moechte ich dieses hinzufuegen.

Hier meine Funktion

void checkLittleFSPath(char *path ,char *targetpath){
 
  char *patternChar;
  patternChar=strchr(path,'/');
  if (patternChar!=NULL && (patternChar-path+1) == 1)
  {
  } else {
   sprintf(targetpath, "%s%s", "/", path);

  }
  
}


void setup() {
  
  char pathlocal[200];
  
  sprintf(pathlocal, "h/");
  Serial.println (pathlocal);
   checkLittleFSPath(pathlocal, pathlocal );
   Serial.println (pathlocal);
}

void loop() {
  
}

Ergebnis ist aber /// und nicht wie erwartet /h/

Wo ist mein Denkfehler?

Gibt es auch eine Antwort auf meine Frage im anderen Thread ?
Oder ist das jetzt so Usus ?

Habe dich geantwortet :thinking:

Gibt's denn hier dann nun auch eine Antwort?

Hallo,

also grundsätzlich funktioniert deine Funktion durchaus, Problem ist nur das du checkLittleFSPath() zweimal "pathlocal" übergibst. Dadurch wird derselbe Buffer in sprintf sowohl als Ziel als auch als Quelle verwendet, dies führt leider zu Chaos.

Wenn du einen anderen char als Ziel verwendest, dann erhälst du wie gewünscht "/h/".

void checkLittleFSPath(char *path ,char *targetpath){
  char *patternChar;
  patternChar=strchr(path,'/');
  if (patternChar!=NULL && (patternChar-path+1) == 1)
  {
  } else {
    sprintf(targetpath, "%s%s", "/", path);
  }
}

void setup() {
  char pathlocal[200];
  char targetpath[200];
  
  sprintf(pathlocal, "h/");
  Serial.println (pathlocal);
  checkLittleFSPath(pathlocal, targetpath);
  Serial.println(targetpath);
}

void loop() {
  
}

Viele Grüße
Efs95

Sowas hatte ich fast vermutet aber keine Zeit mehr es auszuprobieren....danke dir :smiley:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.