- 论坛徽章:
- 0
|
我定义了一个指针数组char* array[100],数组的每个元素是char*类型,然后打开一个路径,读取该路径下所有文件的文件名,并赋给这个指针数组。问题是,如果路径下文件的文件名都比较长的话,只要文件多于一定数量,这些赋值就不正常了。
下面是我的代码,我每读取一个文件,显示一下array[0]的值(即第一个读到的文件名),按理说每次都应该显示一样的文件名,可是当我读到第68个文件时,array[0]显示出的却是第68个文件的部分文件名。
请教大家,这是怎么回事?谢谢各位先~~~
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]){
DIR* dp;
char* array[100];
struct dirent* entry;
char* p;
int i = 0;
dp = opendir("/root/film/Vol02");
while((entry = readdir(dp)) != NULL){
if(strcmp(".",entry->d_name) == 0 ||
strcmp("..",entry->d_name) == 0)
continue;
p = (char*)malloc(sizeof(char));
p = entry->d_name;
array[i++] = p;
printf("%s\n",array[0]);
}
array = NULL;
closedir(dp);
return 0;
}
[ 本帖最后由 cjls1 于 2008-3-13 23:13 编辑 ] |
|