A segfault is one of several possible runtime errors; other runtime errors may include things like dividing by zero, domain error, range error, stack overflow, etc.
The exact meaning of "segfault" or "segmentation fault" can vary based on the action and the environment; it can mean that you're trying to access memory you don't own, or that you're trying to perform a disallowed operation (modifying read-only memory, which is what you're attempting to do in this case), or that you're trying to dereference an invalid pointer value (such as NULL), or something else.
Note that the C language does not mandate that a segfault be raised when you attempt to modify a string literal; it only states that the behavior is undefined. A segfault is one of several possibilities. Another possible outcome is that the code behaves as you expected.