¿Cómo eliminaría las primeras tres letras de una cadena con C?¿Cómo eliminar los tres primeros caracteres de la cadena con C?
Respuesta
void chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
return; // Or: n = len;
memmove(str, str+n, len - n + 1);
}
Un diseño alternativo:
size_t chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
n = len;
memmove(str, str+n, len - n + 1);
return(len - n);
}
+1, pero ¿no sería mejor que int, que imprime el n. ° de caracteres restantes (o -1 en lugar de la afirmación)? –
@Tim: hay todo tipo de diseños posibles; esta es una implementación aproximadamente mínima: en general, creo que la tarea es mejor que el retorno anticipado. En cuanto al valor de retorno, estaré de acuerdo con devolver la longitud reducida, eso sería 'size_t' como la entrada, lo más probable. –
En C, la cadena es una matriz de caracteres en ubicaciones continuas. Tampoco podemos aumentar o disminuir el tamaño de la matriz. Pero crea una nueva matriz de caracteres de tamaño original menos 3 y copia los caracteres en una nueva matriz.
Bueno, aprender acerca de copia de cadena (http://en.wikipedia.org/wiki/Strcpy), la indexación en una cadena (http://pw1.netcom.com/~tjensen/ptr/pointers.htm) y vuelve a intentarlo. En pseudocódigo:
find the pointer into the string where you want to start copying from
copy from that point to end of string into a new string.
-1. El código sin explicación es mejor que los enlaces a referencias y el "pseudocódigo" completamente obvio. – pelesl
Por ejemplo, si usted tiene
char a[] = "123456";
la forma más sencilla de eliminar los 3 primeros caracteres serán:
char *b = a + 3; // the same as to write `char *b = &a[3]`
b contendrá "456"
Pero en caso general también debe asegurarse de que la longitud de cadena no superó
No solo es 'sizeof (char)' ** inútil **, también es ** wrong ** para otros tipos. La aritmética del puntero se lleva a cabo en unidades de elementos, no en bytes. –
Sí, tienes razón. Han editado la respuesta –
- 1. Eliminar los primeros 4 caracteres de una cadena con PHP
- 2. ¿Cómo eliminar los primeros 10 caracteres de una cadena?
- 3. cómo obtener los primeros tres caracteres de un NSString?
- 4. cómo verificar los primeros tres caracteres en una variable?
- 5. Eliminando N primeros caracteres de la cadena
- 6. cómo eliminar los primeros 3 caracteres de nsstring?
- 7. MySQL Eliminar primeros dos caracteres de todos los campos
- 8. Devuelve los primeros N caracteres de la cadena
- 9. ¿Cómo eliminar los dos primeros y los últimos dos caracteres en una cadena?
- 10. Eliminar archivos cuando los dos primeros caracteres son ZZ
- 11. Salida de los primeros 100 caracteres en una cadena
- 12. Cómo eliminar los primeros 0 (cero) de la cadena en C# 2.0
- 13. Devolviendo los primeros N caracteres de una cadena Unicode
- 14. Regex para eliminar todos los caracteres especiales de la cadena?
- 15. cadena de formato, eliminar los caracteres iniciales
- 16. Eliminar todos los caracteres no ASCII de la cadena
- 17. Eliminar caracteres de la cadena en el estándar C
- 18. ¿Cómo puedo eliminar caracteres repetidos en una cadena con R?
- 19. ¿Cómo obtener los dos primeros caracteres de una cadena en la consulta de Oracle?
- 20. C# - Lista - eliminar todos los elementos pero NO los primeros
- 21. Cómo determinar si la cadena contiene subcadena específica dentro de los primeros X caracteres
- 22. jQuery eliminar los caracteres especiales de la cadena y más
- 23. Como llegar 5 primeros caracteres de la cadena
- 24. Clasificación LINQ: los tres primeros deben ser fabricantes diferentes
- 25. Eliminar caracteres después de la cadena?
- 26. ¿Cómo obtener los primeros x caracteres de una cadena, sin cortar la última palabra?
- 27. ¿Cómo puedo quitar los primeros X caracteres de la cadena usando sed?
- 28. Eliminar los caracteres finales de la cadena en Javascript
- 29. ¿Cómo eliminar caracteres inválidos de una cadena?
- 30. Cómo eliminar todos los caracteres de una cadena
"PLZ enviar teh codez !! 1" - "No" – delnan
'str = str + 3;' ya que 'str + = 3;' es demasiado corto para un comentario! –