PDA

Visualizza la versione completa : Conta spazi bianchi in una stringa C


Fiorediloto
27-07-2014, 18:46
Hola!:o Ho un programma banalissimo, ma che purtroppo non riesco a far funzionare! Devo contare gli spazi bianchi di una stringa contenente massimo 100 elementi! Il codice che ho composto è questo:



#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char stringa [100];
int i;
int conta;
printf("Inserisci una stringa!\n");
scanf("%s",stringa[100]);

conta=0;
for(i=100;i<0;i--)
{
if(stringa[i]=='\0')
conta+1;
}
printf("Caratteri nulli nella stringa=%d\n",conta);


system("PAUSE");
return 0;
}


Ringrazio chiunque fosse disposto ad aiutarmi! :fiore:

linoma
27-07-2014, 20:24
Credo che gli spazi abbiano ascii 0x20, il ciclo for dovrebbe essere >= 0 e partire da 99 e lo scanf ha parametri errati. Credo siano solo 4 gli errori

Fiorediloto
27-07-2014, 20:37
Credo che gli spazi abbiano ascii 0x20, il ciclio for dovrebbe essere >= 0 e partire da 99 e lo scanf ha parametri errati. Credo siano solo 3 gli errori



potresti dirmi perchè sono errati i parametri dello scanf? Ti ringrazio :o

Fiorediloto
27-07-2014, 20:46
Dunque, l'ho modificato così;

ho sostituito :
scanf("%s",stringa);

ed il ciclo for con:

for(i=99;i>=0;i--);

ho fatto bene?E se sì, il terzo errore qual è? Grazie mille se decidi di rispondermi :fiore:

linoma
27-07-2014, 20:56
Lo 0 indica la fine della stringa nn gli spazi ce hanno ASCII 32



if(stringa[i]==32)

Fiorediloto
27-07-2014, 21:00
Lo 0 indica la fine della stringa nn gli spazi ce hanno ASCII 32



if(stringa[i]==32)


D'accordo!Ho sostituito, come mi hai detto tu, ma conta risulta sempre uguale a 5 nell'output... Puoi dirmi perchè? Eppure l'ho inzializzato! :mad: Ti ringrazio per la cortesia!

linoma
27-07-2014, 21:04
conta++;

Fiorediloto
27-07-2014, 21:06
if(stringa[i]==32)
conta++;
i--;

Sì, ho già scritto così :mem: Ma l'output è sempre 5!

Eduadie
28-07-2014, 02:19
Partendo dal tuo codice potresti notare qualche piccolissimo cambiamento d'impostazione per il tuo esercizio...

PS Per l'acquisizione di stringhe ti consiglio fgets(), cercala in internet è molto intuitiva, inoltre in questo algoritmo eviti qualche controllo inutile una volta che la stringa è terminata.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(int argc, char *argv[])
{
//Dichiarazioni variabili
char stringa [100];
int i;
int conta=0;


//Input stringa
printf("Inserisci una stringa!\n");
fgets(stringa, 100, stdin);


//Lunghezza di stringa
int lenght = strlen(stringa);


for(i=0;i<=lenght;i++)
{
if(stringa[i]==' ')
conta = conta+1;
}


//Output spazi nulli
printf("Caratteri nulli nella stringa=%d\n", conta);




system("PAUSE");
return 0;
}

Fiorediloto
28-07-2014, 10:14
Farò tesoro del tuo consiglio! Grazie mille ad entrambi! :fiore:

Loading