SD card write very random, mostly not working

Here are my relevant code pieces, I think, if I missed something let me know

You missed the part about needing to post ALL of your code.

      Serial.print((char*)numhum[i]); Serial.print("     ");

It looks like numhum is a char array. Why do you feel the need to cast to a char pointer? If numhum isn't a char array, why isn't it?