chdir in C *HILFE*

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Daniel200289
Beiträge: 20
Registriert: Mo Aug 11, 2014 12:17 pm

chdir in C *HILFE*

Beitrag von Daniel200289 » Mo Aug 11, 2014 12:23 pm

Hey, kann mir jemand bei einem Problem in C helfen?

Folgendes soll passieren:
ich möchte ein Verzeichnis in einem Programm wechseln. Es soll in das vorhandene Verzeichnis "neu" gewechselt werden und danach der aktuelle Pfad ausgegeben werden. Soweit kein Problem:

Code: Alles auswählen

int main(void) {
	
       char *ein ="neu";
       
       chdir(ein);
       
       getcwd(pfad, 256);
       printf(pfad);
       printf(" $ ");
       
       }
Nun will ich den Code so umschreiben, dass mit Hilfe der Eingabe "cd neu" in das Verzeichnis gewechselt werden soll. Dazu will ich vom Eingabestring das cd abschneiden, damit mein Programm ins Verzeichnis "neu" wechselt. Dies tut es aber nicht. Vielleicht findet ihr den Fehler. Hier mein Code:

Code: Alles auswählen

char eingabe[256];
	fgets(eingabe,sizeof(eingabe),stdin);
	
	
	 
	 
	 char *teil_str;

	 teil_str = strtok(eingabe, " ");

		teil_str = strtok(NULL, " ");          //in teil_str steht jetzt nur noch "neu"
		
		//printf("%s", teil_str);
		
		chdir(teil_str); 
	
	   
	   
	getcwd(pfad, 256);
       printf(pfad);
       printf(" $ ");                // nach der erneuten Pfadausgabe ist der Pfad leider der selbe wie am Anfang
}
Danke schon mal für eure Hilfe.

Edit by cloidnerux: Code-Tags

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: chdir in C *HILFE*

Beitrag von oenone » Mo Aug 11, 2014 1:06 pm

Am Ende der Eingabe ist noch ein Zeilenumbruch. Der Rückgabewert von chdir() hätte dir gezeigt, dass es auf einen nicht vorhandenen Pfad zugreifen will (errno == ENOENT - The file does not exist.) "neu\n" gibt es nicht.

Am Besten nach fgets:

Code: Alles auswählen

if (eingabe[strlen(eingabe)-1] == '\n') {
   eingabe[strlen(eingabe)-1] = 0;
}
Ach ja, benutz bitte die code-Tags für Code postings.

Wenn du zum Debuggen das komplette Token ausgeben willst, schreib dir am Besten vor und nach dem Token noch ein Zeichen hin, z.B.:

Code: Alles auswählen

printf("pfad: >%s<\n",teil_str);
Dann siehst du gleich, ob im String noch "unsichtbare" Zeichen vorhanden sind.

Daniel200289
Beiträge: 20
Registriert: Mo Aug 11, 2014 12:17 pm

Re: chdir in C *HILFE*

Beitrag von Daniel200289 » Di Aug 12, 2014 11:39 am

Danke für die schnelle Hilfe, klappt jetzt wunderbar =)

Antworten