Devo trovare se un array di caratteri inizia con "ADD". So usare strcmp(), ma non so come ottenere i primi tre caratteri. Odio davvero lavorare con c-stringhe. Come posso prendere una porzione di un array di caratteri come char buffer[1024]?
Come posso tagliare una stringa in C?
8
A
risposta
9
Utilizzare strncmp("ADD", buffer, 3)
.
Non sono sicuro di cosa intendi per "slice" ma qualsiasi puntatore all'interno di buffer
potrebbe essere considerato una porzione. Ad esempio se buffer
è una stringa che inizia con "ADD"
quindi char *slice = buffer + 3
è la stessa stringa con "ADD"
rimossa. Nota che slice
è quindi una parte di buffer
e la modifica del contenuto di slice
modificherà il contenuto di buffer
. E viceversa.
Se per "slice" si intende una copia indipendente, è necessario allocare un nuovo blocco di memoria e copiare le parti interessanti da buffer
nella memoria. Le funzioni della libreria strdup
e strndup
sono utili per questo.
8
Usa strncmp .Assuming buffer è la variabile di testare, basta
strncmp (buffer,"ADD",3);
Come si potrebbe specificare un offset e una fine che è più corta della sequenza di char originale? Come "ciao" + 1 taglia 3 (quindi "ell"); Questo è ciò che si intende per fetta credo. Fortunatamente strncmp e printf offrono opzioni per lavorare con questo, ma sarebbe bello mostrarlo come una sequenza di caratteri – scape
@scape Vedi [Come estrarre una sottostringa da una stringa in C?] (Https://stackoverflow.com/questions/19555434) – kmkaplan
"strtok in genere sostituisce i delimitatori con" \ 0 "poiché" mangia "l'input." che ovviamente ha alcuni inconvenienti. – scape