Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Conta spazi bianchi in una stringa C

    Hola! 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:

    codice:
    #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!
    Ultima modifica di MItaly; 28-07-2014 a 13:02

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    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
    Ultima modifica di linoma; 27-07-2014 a 21:05
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Quote Originariamente inviata da linoma Visualizza il messaggio
    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

  4. #4
    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

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Lo 0 indica la fine della stringa nn gli spazi ce hanno ASCII 32

    codice:
    if(stringa[i]==32)
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Quote Originariamente inviata da linoma Visualizza il messaggio
    Lo 0 indica la fine della stringa nn gli spazi ce hanno ASCII 32

    codice:
    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! Ti ringrazio per la cortesia!

  7. #7
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    codice:
    conta++;
    Per gli Spartani e Sparta usa spartan Il mio github

  8. #8
    if(stringa[i]==32)
    conta++;
    i--;

    Sì, ho già scritto così Ma l'output è sempre 5!
    Ultima modifica di Fiorediloto; 27-07-2014 a 21:16

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    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.

    codice:
    #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;
    }

  10. #10
    Farò tesoro del tuo consiglio! Grazie mille ad entrambi!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.