Если у вас есть символьный указатель на строку вроде:
char *s = "This is my string";
, тогда вы можете просто сделать s++
.
Если у вас есть массив символов , Лучше всего иметь указатель на этот массив:
char s[] = "This is my string";
char *ps = s;
, тогда вы можете сделать ps++
и убедиться, что вы используете ps
вместо s
.
Если вы не хотите иметь отдельный указатель на ваш массив, вы можете использовать memmove
для копирования данных:
memmove (s, s+1, strlen (s+1) + 1); // or just strlen (s)
, хотя ни один из них не будет работать для изначально пустой строки, так что выЯ должен сначала проверить это.Также имейте в виду, что не рекомендуется пытаться модифицировать строку литералы таким способом (или любым способом, действительно), поскольку не определено, разрешено ли это.
ДругойРешение состоит в том, чтобы просто закодировать цикл:
for (char *ps = s; *ps != '\0'; ps++)
*ps = *(ps+1);
*ps = '\0';
Это будет работать для всех строк, пустых или иных.