0

如何检查以下结构的名称字段中是否存在 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]
4

1 回答 1

1

您会收到未初始化的警告,因为您没有初始化ent将指向的值。struct dirent * ent只是一个应该指向 astruct dirent但您尚未初始化它指向的内存的指针。为了使用entmalloc

struct dirent * ent = malloc(sizeof(*ent));

或者在堆栈上分配它并使用地址操作符获取指向它的指针:

struct dirent ent;
struct dirent * entPointer = &ent;

至于 EOF 问题:EOF宏可用于检测流中的文件结尾,例如由fopen. 它与字符串无关d_name[255]。除非你的意思是终止'\0'- ,它保证在那里。[需要引用]

于 2013-06-11T18:41:36.927 回答