如何检查以下结构的名称字段中是否存在EOF?
struct dirent * ent;
ent->d_name;
即。我想知道ent->d_name
是否拥有EOF。
另一方面,初始化变量的类型为char[256]
ent->d_name[255]='\0';
但我收到以下警告:
warning: can be used 'ent' uninitialized in this function [-Wuninitialized]
答案 0 :(得分:1)
您收到未初始化的警告,因为您没有初始化ent
指向的值。 struct dirent * ent
只是指向struct dirent
的指针,但您尚未初始化它指向的内存。要ent
使用malloc
:
struct dirent * ent = malloc(sizeof(*ent));
或在堆栈上分配它并使用address-of运算符获取指向它的指针:
struct dirent ent;
struct dirent * entPointer = &ent;
关于EOF问题:EOF
宏可用于检测流中的文件结尾,例如fopen
打开的文件。它与字符串d_name[255]
无关。除非你的意思是终止 - '\0'
,保证在那里。 [引证需要]