Forum

[c/c++] "Chodzenie" po katalogach

[+] Twoje konto

Subskrybuj kanał najnowszych wypowiedzi w tym temacie

Wątek Forum > Porady > Programowanie > [c/c++] "Chodzenie" po katalogach

Idź do strony:1
Ocena: (Ocen: 0)
Wypowiedzi 1 - 9 z 9
 Zarejestrowany, zwieszony yarpo Kopiuj nick (0.0.0.*) |  
Wypowiedź dodana: 26 listopada 2007, 19:55:40 | Wypowiedź edytowana Ostatnio edytowana: 26 listopada 2007, 19:58:47 po raz 1-wszy przez: yarpo
« Opcje

Witam.

Mam do napisania program na projekt. Właśnie zacząłem.
Program ten ma być marną imitacją programów typu Norton Commander itp.

Do wyśietlania zawartości folderu chciałbym użyć funkcji popen():

Cytat:

Library: stdio.h

Prototype: FILE *popen(const char *command, const char *type);

Syntax: FILE *fp;
fp = popen( "ls -l", "r");

Notes:
command - is the command to be issued.
type - r - read O/P from command.
- w - Write data as I/P to command.

#include <stdio.h>
int str_len(char*);
char *bez_entera(char*);
int main(void){
FILE *fp;
char line[130];
fp = popen("ls -a", "r");
while ( fgets( line, sizeof line, fp))
if (line[1]!= '\n') printf("%s\n", bez_entera(line));
pclose(fp);

system("cd las"); // powinno przejsc do katalogu 'las'

fp = popen("ls -l", "r");
while ( fgets( line, sizeof line, fp))
if (line[1]!= '\n') printf("%s\n", bez_entera(line));
pclose(fp);
return 0;
}
int str_len(char *a){
int i = 0;
while (a[i]) i++;
return i;
}
char *bez_entera(char *a){
a[str_len(a)-1] = 0;
return a;
}

Póki co to jest kod bardzo "na teraz". Nie jest to kod nawet początkowy programu. Po prostu testuję jak to ma działać.

W folderze, w którym znajduje się program jest też folder 'las'. Za pomocą

system("cd las")

chciałbym przejść do las i wyświetlić jego zawartość. Niestety. Po wywołaniu system("cd las") jednak "nie zmieniam folderu". Wydaje mi się, że musiałbym gdzieś to zapisać [chyba]...

Gdyż powyższy kod powoduje dwukrotne wyświetlanie tego samego... :-(

Jeśli ktoś wie jak móc "przechodzić" do do innych folderów [może są do tego jakieś funkcje C/C++ lub całe biblioteki] to z chęcią posłucham.

Z góry dziękuję za wszelką pomoc :-)

EDIT. Zapomniałem, jest to pisane pod linuksa.

 Gość REKLAMA Kopiuj nick (*->*)
Wypowiedź dodana: 26 listopada 2007, 19:55:41

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.238.128.*) |  
Wypowiedź dodana: 26 listopada 2007, 20:17:30
« Opcje

Powinno działać teoretycznie... A spróbuj stosować funkcję opendir i jej stowarzyszone.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Zarejestrowany, zwieszony yarpo Kopiuj nick (0.0.0.*) |  
Wypowiedź dodana: 27 listopada 2007, 01:56:15
« Opcje

Dobra, chyba jednak skorzystam z opendir / readdir itp.
pewnie będę miał jeszcze jakieś pytania :-P. Ale na dziś starczy :-)

Dzięki za pomoc :piwo:

 Zarejestrowany, zwieszony yarpo Kopiuj nick (0.0.0.*) |  
Wypowiedź dodana: 1 grudnia 2007, 20:48:59
« Opcje

Czy jest jakiś sposób aby w programie C/C++ pobrać położenie programu? Jako ścieżkę bezwzględną.

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.238.128.*) |  
Wypowiedź dodana: 1 grudnia 2007, 21:12:10
« Opcje

JEśli się nie mylę to jest to zerowy parametr w tablicy parametrów (nagłówek funkcji main: int argc, char *argv[] choć może się różnić w zależności od kompilatora)


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Zarejestrowany, zwieszony yarpo Kopiuj nick (0.0.0.*) |  
Wypowiedź dodana: 1 grudnia 2007, 21:28:13
« Opcje

printf("Jestes tu: %s\n",argv[0]);

Zwraca "./plik" - przynajmniej u mnie. Debian, gcc.

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.238.128.*) |  
Wypowiedź dodana: 1 grudnia 2007, 21:47:39
« Opcje

Eh, linux... :-( nie mam pomysłu w takim razie. Nie programuję zasadniczo pod ten system...


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Zarejestrowany, zwieszony yarpo Kopiuj nick (0.0.0.*) |  
Wypowiedź dodana: 1 grudnia 2007, 23:58:20
« Opcje

No trudno :-)

Trzeba będzie to jakoś inaczej obejść :-)

 Zarejestrowany Soul Mężczyzna Kopiuj nick (83.6.205.*) |  
Wypowiedź dodana: 2 grudnia 2007, 00:38:03
« Opcje

Nie programuję zasadniczo pod ten system...

Jestem prawie pewien, że yarpo też zasadniczo nie będzie :>


Duszołap

 
Idź do strony:1

[+] Pokaż/odśwież listę czytających i monitorujących ten wątek

Podobne tematy:
Tytuł wątkuDziałWypowiedziWyświetleńOcenaOstatnia wypowiedź
Wątek zamkniętyniewidoczny post w "księdze gości"- albo błąd w wyświetleniu pola "ostatnia wypowiedź"Błędy na stronie4357 22.06.2007 23:47:45
WątekList motywacyjny in "inglisz"
Potrzebna pomoc w napisaniu listu motywacyjnego po angielsku
Pogaduchy11456 28.05.2009 19:31:03
Wątek zamkniętyMaile - "Nowa prywatna wiadomość"Błędy na stronie3198 22.06.2007 14:48:14
Wątek zamkniętyNie można pobrać dokumentu
Podczas pobierania "Baza danych dla Forum" wyskakuje błąd 404
Błędy na stronie2302 3.02.2008 11:55:05
Wątek zamkniętyPasek "zainteresowani wątkiem"Opinia o stronie oraz propozycje18190 10.06.2007 14:24:57

Nowa wypowiedź

Nowa wypowiedź
Nie jesteś zalogowany; będziesz traktowany jako gość!
Zaloguj Zaloguj
Nick (gość): | Przepisz ten kod [?]: 62a79:
Tekst:

 
* Wysyłając formularz wyrażasz zgodę na przetwarzanie przekazanych danych w zakresie wskazanym w Regulaminie

Subskrybuj kanał najnowszych wypowiedzi w tym temacie


Chcesz mieć też takie forum na swojej stronie? Napisz!

Strona istnieje od 25.01.2001
Ta strona używa plików Cookie.
Korzystając z niej wyrażasz zgodę na przetwarzanie danych a zakresie podanym w Polityce Prywatności.
Helion.pl  
archive To tylko kopia strony wykonana przez robota internetowego! Aby wyświetlić aktualną zawartość przejdź do strony.

Optymalizowane dla przeglądarki Firefox
© Copyright 2001-2018 Dawid Najgiebauer. Wszelkie prawa zastrzeżone.
Ostatnia aktualizacja podstrony: 15.07.2018 16:27
Wszystkie czasy dla strefy czasowej: Europe/Warsaw