Come rimuovere le prime tre lettere di una stringa con C?Come rimuovere i primi tre caratteri dalla stringa con C?
risposta
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 design 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, ma non sarebbe meglio come int, che stampa il numero di caratteri effettivamente rimasti (o -1 invece dell'asserzione)? –
@Tim: ci sono tutti i tipi di possibili design; questa è un'implementazione approssimativamente minima - nel complesso, penso che il compito sia migliore del ritorno anticipato. Per quanto riguarda il valore restituito - Sarei a posto con la restituzione della lunghezza ridotta - molto probabilmente 'size_t' come l'input. –
In C, la stringa è una matrice di caratteri in posizioni continue. Non possiamo né aumentare né diminuire la dimensione dell'array. Ma crea un nuovo array di caratteri di dimensioni originali meno 3 e copia i caratteri in un nuovo array.
Beh, conoscere copia stringa (http://en.wikipedia.org/wiki/Strcpy), l'indicizzazione in una stringa (http://pw1.netcom.com/~tjensen/ptr/pointers.htm) e riprovare. In pseudocodice:
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. Il codice senza spiegazione è migliore dei collegamenti ai riferimenti e dello "pseudocodice" completamente ovvio. – pelesl
Ad esempio, se si dispone di
char a[] = "123456";
il modo più semplice per rimuovere i primi 3 caratteri saranno:
char *b = a + 3; // the same as to write `char *b = &a[3]`
b conterrà "456"
Ma nel caso generale, si dovrebbe anche fare in modo che la lunghezza della stringa non ha superato
Non solo 'sizeof (char)' ** è inutile **, è anche ** sbagliato ** per altri tipi. L'aritmetica del puntatore avviene in unità di elementi, non in byte. –
Sì, hai ragione. Ho modificato la risposta –
- 1. Espressione regolare estrai i primi tre caratteri da una stringa
- 2. Come arrivare primi 5 caratteri dalla stringa
- 3. Come rimuovere i primi 10 caratteri da una stringa?
- 4. Rimuovere i caratteri duplicati dalla stringa
- 5. come controllare i primi tre caratteri in una variabile?
- 6. Come posso rimuovere i primi caratteri X dalla stringa usando sed?
- 7. come rimuovere i primi 3 caratteri da nsstring?
- 8. Regex per rimuovere tutti i caratteri speciali dalla stringa?
- 9. stringa Rimuovere tra i 2 caratteri dalla stringa di testo
- 10. Il modo più veloce per rimuovere i caratteri dalla stringa
- 11. Come rimuovere i caratteri speciali dalla stringa in Swift 2?
- 12. Come rimuovere i caratteri di controllo dalla stringa?
- 13. Selezionare solo i primi caratteri in una stringa C++
- 14. MySQL Rimuovere primi due caratteri di tutti i campi
- 15. rimuovere i caratteri alfa e lo spazio bianco dalla stringa
- 16. Come ottenere i primi cinque caratteri di una stringa
- 17. VBA - Copia i primi tre caratteri da una stringa in un'altra cella
- 18. Java rimuovere i caratteri non latini-base dalla stringa
- 19. Metodi per rimuovere caratteri specifici dalla stringa?
- 20. Scala: come mascherare i primi N caratteri di una stringa
- 21. Rimuovere i caratteri speciali da una stringa
- 22. Come rimuovere i primi due e gli ultimi due caratteri in una stringa?
- 23. Rimuovere i primi 3 caratteri in var nel file batch?
- 24. Ruby - come selezionare alcuni caratteri dalla stringa
- 25. Rimuovere i primi 16 byte?
- 26. Ottieni i primi N caratteri dalla stringa senza tagliare le parole intere
- 27. Come rimuovere tutti i caratteri dalla stringa tranne i numeri "," e "." usando Ruby?
- 28. Ottenere i primi 10 caratteri di una stringa?
- 29. Restituisce primi N caratteri di stringa
- 30. Nascondere i primi caratteri x
"plz inviare teh codez !! 1" - "No." – delnan
'str = str + 3;' poiché 'str + = 3;' è troppo corto per un commento! –