Das \0 am ende kannst du weglassen, das macht gcc von alleine
Warum text[0] == 0 ist, kann ich mir nicht erklären. Eigentlich sollte es den ASCII Code von "W" enthalten.
malloc() brauchst du dafür nicht. GCC legt "Welcome\0" in der Data Section ab, und sollte dann eigentlich in text einen Pointer auf diese Speicherstelle schreiben.
Es kann nur sein, das du irgentwas übersehen hast, gib mal deinen gesammten Code.