PDA

Visualizza la versione completa : [C] Contare "manualmente" i caratteri di una stringa


jc74
01-05-2010, 10:21
volevo contare i caratteri di una stringa senza usare l'apposita funzione, credo di aver commesso qualche errore il compilatore ma da due warn
[Warning] multi-character character constant
main.c [Warning] comparison is always true due to limited range of data type
mi potete aiutare a capire


#include <stdio.h>
int main()
{
char stringa[]="onomatopeico";
int a=0;
while(stringa[a]!='/0');
{
a++;
}
printf("%d",a);
getchar();
return 0;
}

Alex'87
01-05-2010, 10:32
Originariamente inviato da jc74
while(stringa[a]!='/0');Mi pare che il carattere fine stringa sia \0 :master:

oregon
01-05-2010, 10:33
In questa linea



while(stringa[a]!='/0');


ci sono due errori ... a te scoprirli

jc74
01-05-2010, 10:37
:dh: 1 errore ;;;;;;;;;;;;;;;;;;;;;;

jc74
01-05-2010, 12:00
while(stringa[a]!='m')

questo funge :mame: direi che il terminatore non un char, ma come comparare char a int? (terninatore non uno zero??) :confused: :confused:

tranformare zero in char forse!

oregon
01-05-2010, 13:36
Originariamente inviato da jc74


while(stringa[a]!='m')

questo funge :mame: direi che il terminatore non un char, ma come comparare char a int? (terninatore non uno zero??) :confused: :confused:

tranformare zero in char forse!

Ma che stai dicendo?

In ogni caso, un esempio potrebbe essere



#include <stdio.h>

int main()
{
char stringa[]="onomatopeico";

int a=-1;
while(stringa[++a]) ;

printf("%d",a);
getchar();
return 0;
}

jc74
01-05-2010, 14:00
questo funziona fino a m


#include <stdio.h>
int main()
{
char stringa[]="onomatopeico";
int a=0;
while(stringa[a]!='m')
{
a++;
}
printf("%d",a);
getchar();
return 0;
}

out 3
il terminatore come indicarlo ('/0')?

oregon
01-05-2010, 14:01
Leggi il mio ultimo post ...

jc74
01-05-2010, 14:23
ora letto
veramente a=-1 ok
ma la condizione di while non mi molto chiara capisco incrementare prima a ma poi??!?
non possibile indicare il terminatore


while(stringa[a]!=' TERMINATORE')//ripeti fino a incontrare il TERMINATORE

o-n-o-m-a-t-o-p-e-i-c-o-/n

ps le maiuscole non sono voce alta ma solo per evidenziare il particolare :ciauz:

jc74
01-05-2010, 14:42
ci sono arrivato :mame:
grazie Oregon
se posso c' un modo per indicare il terminatore nell' istruzione?
while(stringa[a]!=' TERMINATORE')
(ho letto post passati in cui dicevi che /n non era EOF

Loading