вы просите, чтобы:
strcpy(ptr, "red");
strcpy(ptr+10, "Blue");
strcpy(ptr+20, "Green");
после того, как вы несете ответственность, чтобы знать, где вы разместили строки
Может быть более практичным / общим, чтобы иметь только один нулевой символ между каждым и в хотя бы два нулевых символа после последнего?
Но, честно говоря, есть более практичные / безопасные решения, использующие std :: vector ...
Об ошибке «lvalue требуется в качестве левого операнда присваивания», она у вас есть для строк
ptr+10 = "Blue";
ptr+20 = "Green";
ptr+n
не является lvalue , а является значением обычно это не переменная
>>> s = 'Zaptoit:685158:zaptoit@hotmail.com'
>>> s.split( ':', 1 )[1]
'685158:zaptoit@hotmail.com'
Другое решение:
s = 'Zaptoit:685158:zaptoit@hotmail.com'
s.split(':', 1)[1]
Другой метод, не используя разделение:
s = 'Zaptoit:685158:zaptoit@hotmail.com'
s[s.find(':')+1:]
Исключая:
>>> s = 'Zaptoit:685158:zaptoit@hotmail.com'
>>> s[s.find(':')+1:]
'685158:zaptoit@hotmail.com'