2013-06-11 58 views
0

如何檢查以下結構的名稱字段中是否存在EOF?如何檢查char中是否存在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

是的,你沒有初始化它。 「擁有EOF」是什麼意思?請澄清你的問題。 –

+0

EOF的存在或EOF的所有權意味着什麼?它通常是流的屬性,根本沒有流。 – aschepler

+0

當遇到文件結束或錯誤條件時,'EOF'(是一個擴展爲)由'getchar()'返回的否定'int'值。我不相信這適用於此。 –

回答

1

你得到未初始化的警告,因爲你沒有初始化值ent會指向。 struct dirent * ent僅僅是一個應該指向struct dirent的指針,但是您尚未初始化它指向的內存。爲了使用ent要麼malloc是:通過使用運營商的地址的

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

或者它分配在堆棧上,並獲得一個指向它:

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

至於EOF問題:EOF宏可用於檢測流中的文件結尾,例如由fopen打開的文件。它與字符串d_name[255]無關。除非你的意思是終止 - '\0',這是保證在那裏。 [引用需要]

+0

坦克你。 EOF在d_name中(我讀了dirent.h的文檔,包含結構) – eduardosufan