如何检查char中是否存在EOF?

时间:2013-06-11 18:29:34

标签: c char eof

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

1 个答案:

答案 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',保证在那里。 [引证需要]