View Full Version : Ce disperato programma
Beppe2hd
04-10-2003, 16:37
Questo codice dovrebbe contare gli spazi bianchi in una stringa, ma purtroppo non funziona. :cry:
Dove ho sbagliato :mad:
# include<stdio.h>
#include<ctype.h>
main()
{
char sentence[80];
int conta = 0;
int indice = 0;
printf("Enter a new line of text:\n");
gets(sentence);
for(indice=0; sentence[indice] != '\0'; indice++);
{
If isspace(sentence[indice]) != 0
++conta;
}
printf("Gli spazi sono in tutto: %d\n", conta);
}
Mi da errore alla linea " If isspace(sentence[indice]) != 0 "
premetto che la funzione isspace ritorna un valore vero o falso!
Potrebbe essere che la funzione isspace non sia definita negli header che importi. Ma per quello che vuoi fare tu è sufficiente scrivere:
if sentence[indice]==32 {
conta++
}
32 è il codice ascii che corrisponde allo spazio.
Aloha!
Per evitare eventuali problemi di porting: sentence[indice]==' '
E' anche molto + intuitivo...
If isspace(sentence[indice]) != 0
Come ti fa a compialre una riga del genere ?
if(isspace(sentence[indice]) != 0)
poi visto che isspace ritorna vero o falso
if(isspace(sentence[indice]))
Comunque isspace non fa il check solamente dello spazio...
Quindi:
if(sentence[indice] == ' ')
Beppe2hd
05-10-2003, 10:52
La funzione esisteva in realtà, il problema era l'if che avevo scritto come If (con la maiuscola):muro: .
Comunque ho eliminato naturalmente anche la parte con !=0.
Ma ora il problema è un secondo programma che è il seguente.
Lo scopo è eliminare gli spazi in eccesso in una stringa.
Io confronto due caratteri e se sono tutti e due spazi non passo nulla da stampare, se uno non è spazio faccio stampare il carattere.
Il problema è che mi da problemi su return 0
#include<stdio.h>
#include<ctype.h>
main()
{
char sentence[80];
int count = 0;
int state = 0;
printf("Enter a new line of text:\n");
gets(sentence);
for(int index=0; sentence[index] != '\0';index++)
if ((isspace(sentence[index]) & (isspace(sentence[index -1]))
return 0;
else printf("%c",sentence[index]);
gets(sentence);
}
Ripeto isspace non controlla la presenza di spazi, ma anche di tab e di \n e \r...
Quindi devi controllare se il carattere è uguale a ' '...
Come fai a fare un return 0; se il main non è dichiarato come int main ? Al massimo puoi fare return; e basta
Beppe2hd
05-10-2003, 14:31
In effetti è stato un mio errore di espressione, a me interessano anche gli altri caratteri speciali come \n ecompagnia..
il problema è che ho provato a fare anche solo con return, ma non mi da niente lo stesso:
comunque adesso provo a scrivere int main e a fare return 0
Sinceramente non capisco perchè return... Me lo spieghi ?
L'and logico si fa così &&...& è l'operatore di and bit a bit...
Beppe2hd
05-10-2003, 18:19
questo potrebbe rivelarsi interessante, ora provo.
Il problema è che sto lavorando in C solo da una settimana che per altro deve comprendere anche fisica è matematica.
Essendo i miei primi programmi non ho molta dimestichezza.
comunque il return era per uscire dalla if:p e mi sa che come metodo era poco ortodosso... vero?
Originariamente inviato da Beppe2hd
comunque il return era per uscire dalla if:p e mi sa che come metodo era poco ortodosso... vero?
Il return esce dalla funzione corrente...
Spiegami a parole cosa volevi fare di preciso con questa condizione:
if(isspace(sentence[index]) && isspace(sentence[index-1]))
Se fai index-1 quando index è 0 vai a leggere in una zona di memoria non appartenente a sentence...quindi potenzialmente pericolosa...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.