[C] fget 的換行小眉角

[C] fget 的換行小眉角

fget 其實很方便,但是如果真的用他來讀取一個檔案,
要小心他會在結尾處自己加上一個換行字元 -> “\n”

這個東西會有可能造成strcmp或是其他的一些判斷上有風險。

abc\n 即使我們真正印出來他會只顯示 “abc”。不過他骨子裡的char array長度偷偷的是4,包含了最後的\n。
所以我們如果把自己宣告的abc直接和這個值相比,
最後strcmp傳回來的就不會是相等。

if( (fp_tmp = fopen("/var/cur_fw_version","r"))!=NULL){
   fgets(current_version,sizeof(current_version),fp_tmp);
   //===判斷從fget拿出來的字串是不是含有最後的換行字元,如果有就把它換成結尾字元\0
   if (current_version[strlen(current_version) - 1] == '\n')
   current_version[strlen(current_version) - 1] = '\0';
   //
   fclose (fp_tmp); //開完檔記得要關!!!
}
175 Views


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *