国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

為何將文件名字讀取到內存用鏈表存放,再從內存中讀取信息輸出到屏幕只顯示一部分?

2019-11-06 06:48:30
字體:
來源:轉載
供稿:網友
這次做的小項目是拷貝文件夾下所有文件到目標路徑,并在讀取源路徑的同時將文件夾下所有文件的名字存放到鏈表中。

而我強無敵啊。用的是循環雙向鏈表存放的數據。先上結構體:

/*			用于存放文件信息			*/typedef struct FILE_STRU{	unsigned char *name;			/*	文件名字	*/	struct FILE_STRU *PRev, *next;		/*	前后的文件	*/}file_stru;/*			用于存放文件夾信息			*/typedef struct DIR_STRU{	unsigned char *name;			/*	文件夾名字	*/	struct DIR_STRU *node_dir_head;		/*	文件夾下文件夾的地址	*/	struct FILE_STRU *file_head;		/*	文件夾下首文件的地址	*/	struct DIR_STRU *prev, *next;		/*	相同路徑前后的文件夾	*/}dir_stru;

然后在使用過程中,發現讀取的時候只輸出一部分。是存放時候的問題呢,還是讀取時候的問題呢?為何將文件名字讀取到內存用鏈表存放,再從內存中讀取信息輸出到屏幕只顯示一部分? - 閃閃閃 - SimKimyiw‘s blog直奔答案了啊,都不是強無敵的思路有問題啊,是內存知識還沒有掌握,這下好了,有了突破,就是存放的時候和讀取的時候出問題了。。感覺自己66的。上代碼:
static dir_stru *_pdir = NULL;/*			查找文件夾下的文件			*/struct FILE_STRU *search_file(char *name){	DIR *pdir = (DIR *)source_dir_opened(name);	if(pdir == NULL)		return NULL;	/*	獲取該文件夾文件名	*/	char *dir, *dirname;	dir = strdup(name);	while(dir != NULL)		dirname = strsep(&dir, "/");		file_stru *pfile_a = (file_stru *)file_list_init();	((dir_stru *)find_dir_node_by_name(_pdir, dirname))->file_head = pfile_a;	struct dirent *dir_file;	char *path_tmp;	/*	開始插入對應子文件	*/	while(dir_file = readdir(pdir))	{		if(dir_file->d_type == DT_REG)			file_list_insert((file_stru *)pfile_a, file_list_get_node(dir_file->d_name));		if(dir_file->d_type == DT_DIR)		{			if(!strcmp(dir_file->d_name, ".") || !strcmp(dir_file->d_name, ".."))				continue;			path_tmp = (char *)get_file_filepath(name, dir_file->d_name);			search_file(path_tmp);			free(path_tmp);		}	}	closedir(pdir);	return pfile_a;}看到紅色標識沒。。。尷尬。。。文件夾一關閉,對應的dirent內存空間也是會釋放的!!我定義存放名字的是指針呢!內存都被釋放了,指到哪了都。。。然后問題就解決了。直接上正確代碼:
file_list_insert((file_stru *)pfile_a, file_list_get_node(strdup(dir_file->d_name)));closedir(pdir);文件夾資源釋放前把文件名字struct dirent *p->d_name內存弄沒了。。好了。大概就是這么蠢的問題我花了好幾個小時才找出來。漲知識了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 茌平县| 正宁县| 镇沅| 仙游县| 明水县| 舒城县| 河东区| 楚雄市| 柯坪县| 印江| 青海省| 桐柏县| 东源县| 吉林市| 蒙城县| 贵定县| 大丰市| 孟津县| 天柱县| 四平市| 大名县| 山阳县| 南江县| 平山县| 天柱县| 达孜县| 晋江市| 新巴尔虎右旗| 蒙山县| 台东县| 大埔区| 民权县| 西乌珠穆沁旗| 达尔| 象州县| 东平县| 怀远县| 道孚县| 礼泉县| 德安县| 油尖旺区|