所以這是一個真正的初學者問題,但我完全失去了。我試圖在一個文件夾中生成一個文件名字符串數組,以便我可以遍歷每個文件並提取一些信息。由於文件數量和文件名的長度不固定,我需要動態分配數組。這是迄今爲止的代碼,它從文件夾獲取文件名,但是當嘗試將名稱分配給數組時,會出現錯誤。初始化一個未知數字和未知長度的字符串數組
int main(int argc, char* argv[])
{
size_t alen;
//input argument is folder path
char src[6], dest[512];
strcpy(src, "*.log");
strcpy(dest, argv[1]);
strcat(dest, src);
int fcount = 0;
char** lnames;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(dest, &FindFileData);
while (hFind != INVALID_HANDLE_VALUE)
{
alen = strlen(FindFileData.cFileName);
*lnames = (char*)malloc(sizeof(char)*alen);
lnames[fcount] = FindFileData.cFileName;
fcount++;
if (!FindNextFile(hFind, &FindFileData))
{
FindClose(hFind);
hFind = INVALID_HANDLE_VALUE;
}
}
return(0);
}
的錯誤是「變量‘LNAMES’被而不被初始化用的」。但是,這不是什麼malloc應該做的?改革的方式我想使用相同的代碼來算的文件數量,然後做的:
char *lnames[fcount];
但[]值必須是一個常數,FCOUNT就不會那麼我很堅持。任何幫助將不勝感激。
「是不是malloc的應該是什麼在做什麼?」 - 沒有。你malloc正在爲文件名分配空間,但是沒有什麼是分配/重新分配空間來指向文件名的指針。 –