Write的时候你应该是没有检查char的长度,char是会以'\0'这个字符终止的,你不检查长度的话Write函数会一直写入数据的,你应该是固定了长度为40吧,这样不行的。read函数读到'\0'终止符时会停止读入数据的,所以不会出错。
初始化你的 char数组 char[40]="\0"
char c[40] = { 0 };