すいません
*( s_ol + temp) != '\0'
これはどういう意味か説明していただけ無いでしょうか?

s_ol + tempは 単に文字列のByteを足しているだけです