我正在編寫一個程序,該目錄在目錄中執行時將生成一個包含該目錄中所有內容的文本文件。我得到從**argv
主目錄路徑,因爲我使用netbeans和cygwin我必須做一些字符串操縱獲取的路徑在我的char* get_path(char **argv)
函數。目錄路徑的大小將總是不一樣,因此我使用malloc來分配空間以將其存儲在內存中。C - 獲取目錄路徑
節目片段:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include "dbuffer.h" //my own library
#include "darray.h" //my own library
ARR* get_dir_contents(char* path)
{
DBUFF *buff = NULL;
ARR *car = NULL;
DIR *dir_stream = NULL;
struct dirent *entry = NULL;
dir_stream = opendir(path);
if(opendir(path)==NULL) printf("NULL");
//... more code here
return car;
}
char* get_path(char **argv)
{
char *path = malloc(sizeof(char)* sizeof_pArray(&argv[0][11]) + 3);
strcpy(path, "C:");
strcat(path, &argv[0][11]);
printf("%s, sizeof: %d \n",path, sizeof_pArray(path));
return path;
}
int main(int argc, char** argv)
{
char *p = get_path(argv);
ARR *car = get_dir_contents(&p[0]);
//... more code here
return (EXIT_SUCCESS);
}
的問題是,我有字符串不初始化dir_stream
指針。我懷疑這是因爲指針和字符串文字之間存在某些差異,但我無法準確指出它究竟是什麼。另外,dirent庫函數期望的事實可能與它有關。
輸出:
C:/Users/uk676643/Documents/NetBeansProjects/__OpenDirectoryAndListFiles/dist/Debug/Cygwin_4.x-Windows/__opendirectoryandlistfiles, sizeof: 131
NULL
RUN FAILED (exit value -1,073,741,819, total time: 2s)
'sizeof_pArray'聲音不對,爲什麼不使用標準函數strlen的?也不需要將'**'傳遞給get_path,只需將其聲明爲普通的'char *'並傳遞'* argv'就可以使其更簡單。 –
http://stackoverflow.com/questions/298510/how-to-get-the-current-directory-in-ac-program – stark
@CyberSpock它是我自己的函數,獲取字符串長度+終止字符 –