LINUX.ORG.RU

передать текущую директорию


0

0

Например если просто открываю текущую, то проблем нет

.........
if((mydir=opendir("."))==NULL)
.........
А вот передать текущую директорию в функцию почему-то не получается, что-то типа
..............
char *dname;
dname=".";
my_fun(*dname)
..............
..............
void my_fun(char pname[])
{
..............
if(dirp=(opendir("p_name"))==NULL)
{
   perror("Opendir:");
   exit(1);
 }
..............
В общем если так то директория не открывается. Пишет не существует файл или директория. Может кто знает как это решить?!


Кавычки там зачем?

anonymous
()

> opendir("p_name")

ы? opendir(p_name) имелось в виду?

tailgunner ★★★★★
()

"что-то типа" это баг на баге. Ты точно приведи код.

dilmah ★★★★★
()

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <dirent.h>
#include <pwd.h>

void m_ls(char dir_name[]);

int main (int arvc, char *arvg[])
{

if(arvc==1) m_ls(".");

else
while (arvc--)
{
printf("\n %s",*arvg++);
m_ls (*arvg);
}

return 0;
}


void m_ls (char dir_name[])
{
DIR *dirp;
struct dirent *dp;
 if(dirp=(opendir("dir_name"))==NULL)
 {
   perror("Opendir:");
   exit(1);
 }

while((dp=readdir(dirp))!=NULL)
printf("\n %s",dp->d_name);
closedir(dirp);
}

aunt
() автор топика
Ответ на: комментарий от aunt

Охренеть! ЭТО компилируется О_О

По теме - работает, но лучше сотри это убожество и почитай гнигу по Сям.

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/stat.h> 
#include <dirent.h> 
#include <pwd.h> 

void m_ls(char *dir_name);

int main (int arvc, char *arvg[])
{

if(arvc==1) m_ls(".");

else
while (arvc--)
{
printf("\n %s",*arvg++);
m_ls (*arvg);
}

return 0;
}


void m_ls (char *dir_name)
{
DIR *dirp;
struct dirent *dp;
 dirp=opendir(dir_name);
 if(!dirp){
   perror("Opendir:");
   exit(1);
 }

while((dp=readdir(dirp))!=NULL)
printf("\n %s",dp->d_name);
closedir(dirp);
}

nikolayd
()
Ответ на: комментарий от aunt

Тебеж в первом и втором посте написали: opendir("dir_name") откроет папку(бгг) "dir_name", а не то, что в переменной dir_name. Ну и вообще код упоротый™.

nikolayd
()
Ответ на: комментарий от Slavaz

Причем тут лаба вообще?! Просто стало интересно. Ошибка нашлась, всё оказывается очень просто вместо if((dirp=(opendir(dir_name)))==NULL) было if(dirp=(opendir(dir_name))==NULL)

aunt
() автор топика
Ответ на: комментарий от aunt

> Тогда не пойму, почему моё не работало, директория открывалась правильно.

тебе пора постичь разницу между qwe и "qwe"

xydo ★★
()
Ответ на: комментарий от nikolayd

спасибо за поднятое настроение

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.