find . -iname "*.c" -exec sed -i.bak "s/assert/MyAssert/g" {} \;
This will apply the change to every .c file in place under the current directory, and create a .c.bak file containing the original. If you want to get rid of those, you could remove them with this:
find . -iname "*.bak" -exec rm {} \;
Of course, make sure you have a copy of everything first, I might have messed up :-)
If you want to catch cases more carefully, avoiding 'assert' in the middle of another word, but getting it at the beginning of a line, but it starts to get ugly, and still isn't perfect:
find . -iname "*.c" -exec sed -i.bak -e "s/\([^a-zA-Z0-9S]\)assert(/\1MyAssert(/g" -e "s/^assert(/MyAssert(/" {} \;