2012-08-12 13 views
5

Stavo solo cercando di vedere come verificare il carattere di terminazione null nell'array char * ma non sono riuscito. Posso trovare la lunghezza usando la procedura del ciclo for dove continui a controllare ogni elemento, ma volevo semplicemente usare il ciclo while e trovare la stringa di terminazione nulla. Non riesco mai a uscire dal ciclo while. Qualche ragione per cui è così?controllare il carattere di terminazione null in char *

char* forward = "What is up"; 
int forward_length = 0; 
while (*(forward++)!='/0') { 
    forward_length++; 
    printf("Character %d", forward_length); 
} 
+12

hai ricevuto un avviso su una costante a più caratteri? Stai usando la barra sbagliata '' \ 0'' non ''/ 0'' – Musa

+0

declare forward_length come potrebbe essere a volte utile anche la classe di registro. – Ram

risposta

23

Hai utilizzato '/0' invece di '\0'. Questo non è corretto: il '\0' è un carattere null, mentre '/0' è un letterale di tipo multi-carattere.

Inoltre, in C è OK per saltare uno zero nella condizione:

while (*(forward++)) { 
    ... 
} 

è un metodo valido per controllare carattere, intero, puntatore, ecc per essere zero.

14

Il carattere null è '\0', non '/0'.

while (*(forward++) != '\0') 
6

tuo '/0' dovrebbe essere '\0' .. hai la barra invertito/appoggiato nel modo sbagliato. Il tuo while dovrebbe essere simile:

while (*(forward++)!='\0') 

se la parte != '\0' della vostra espressione è opzionale qui in quanto il ciclo continuerà fintanto che restituisce diverso da zero (null viene considerato zero e terminerà il ciclo) .

tutti i caratteri "speciali" (cioè, escape sequences per i caratteri non stampabili) utilizzare una barra rovesciata, come scheda '\t', o newline '\n', e lo stesso per nulla '\0' modo che sia facile da ricordare.

6

Per rendere questo completo: mentre altri ora hanno risolto il problema :) Vorrei darti un buon consiglio: non reinventare la ruota.

size_t forward_length = strlen(forward); 
+0

Come si usa questa logica size_t? – vkaul11

+0

@ vkaul11 Cosa intendi con "utilizzando questa logica size_t"? –

+0

@ H2CO3 Mi dispiace, ma è sempre una buona pratica scrivere codice per funzioni predefinite –

Problemi correlati