Dovrei rispondere a una domanda a casa per una delle mie lezioni. In particolare, dovrei dire se alcuni array in C sono considerati stringhe o meno. Sulla base di questo articolo ( https://www.geeksforgeeks.org/strings-in-c-2/ ) So che le stringhe sono un array di caratteri con il terminatore null alla fine.
Il mio blocco principale è una parte della domanda che si pone su un array che assomiglia a questo:
char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' };
Questo è ovviamente un array di caratteri con un carattere che termina null alla fine. Tuttavia, è ancora considerata una stringa poiché ha anche un carattere di terminazione null nel mezzo? Come influirà sulla stringa?
EDIT: sulla base dei commenti, ho fornito la formulazione effettiva della domanda:
"Quale delle seguenti matrici può essere considerata" stringhe "allo scopo di usarle come argomenti per strcpy (), strncpy (), strcmp (), strncmp () e funzioni stringa simili (indica tutte le applicazioni)?"
EDIT: ho inviato un'email al mio professore a riguardo poiché la domanda sembrava formulare ambiguamente (come sottolineato da diverse persone). Se qualcuno è curioso, mi ha detto "Sì, è una stringa. La chiave è che c'è un carattere nullo. Ma ovviamente ciò avrà effetto su qualsiasi operazione di stringa; la stringa termina con il carattere null".
strcmp()
. Se può essere usato come argomento per la mutazione delle funzioni di stringa dipende da fattori aggiuntivi che non vengono forniti.
c1
sono mutabili, quindi non vedo perché non possa essere un argomento di destinazione valido strcpy
o simile, a meno che non sia abbastanza grande da contenere la stringa di origine. Ciò non farebbe in modo che non sia una stringa, ma non adatta a un determinato scopo.
c1
soddisferebbe i requisiti di base per gli argomenti di stringa a tutte le funzioni di stringa (strette) della libreria standard, comprese tutte quelle specificatamente denominate, ma il comportamento potrebbe non essere quello che il chiamante si aspetta o desidera (ignorando anche comportamenti indefiniti che potrebbero essere suscitati).
char
. Qualsiasi tipo di carattere lo farà.
"CS"
con qualche byte di garbage aggiunto (nel qual caso il carattere NUL finale è irrilevante). Ma non è una stringa "nel suo insieme". - Tuttavia, alimentare questostrcpy
ecc. Non farà esplodere il tuo PC perché queste funzioni "vedranno" solo la"CS"
parte.