Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con le stringhe in C.

    Salve a tutti e buonasera.
    Ero alle prese con un programmino quando mi ha dato un errore un po' insolito, ve ne parlo subito:
    In primis la traccia dell'esercizio consiste nel far inserire dall'utente una stringa, per poi fargli inserire una parola di essa che vuole cambiare e poi la parola con cui vuole cambiarla.
    Il codice e' il seguente:

    codice:
    int posizionefrase=-1,contatore=0,lunghezzafrase,lunghezzaparola,lunghezzaparola2,trovata='false',t,i;
        char str[81],p[10];
        printf("inserisci una frase max 80 caratteri: ");
        gets(str);
        printf("inserisci la parola che vuoi cambiare: ");
        gets(p);
        lunghezzaparola=strlen(p);
        char p2[lunghezzaparola];
        printf("inserisci con quale parola sostituirla: ");
        gets(p2);
        lunghezzafrase=strlen(str);
        lunghezzaparola2=strlen(p2);
        do
        {
            posizionefrase=posizionefrase+1;
            if(str[posizionefrase]==p[0])
            {
                contatore=1;
                trovata='true';
                while((contatore<lunghezzaparola)&&(trovata))
                {
                    t=posizionefrase+contatore;
                    if(str[t]!=p[contatore])
                    {
                        trovata='false';
                    }
                    else
                    {
                        contatore++;
                    }
                }
            }
    
    
        }
        while((posizionefrase<(lunghezzafrase-lunghezzaparola))&&(!trovata));
        printf("%d\n",posizionefrase);
        if (trovata)
        {
            for(i=0;i<lunghezzaparola2;i++)
            {
                t=posizionefrase+i;
                str[t]=p2[i];
            }
            printf("%s\n",str);
        }
        else{printf("la parola non c'e' nella frase inserita.");}

    Il problema mi viene dato dall'if subito dopo l'incremento della variabile "posizionefrase", praticamente mi entra in quell'if nonostante la condizione non sia vera.
    Attendo con ansia delucidazioni e vi ringrazio in anticipo^^
    Ultima modifica di LeleFT; 15-04-2016 a 09:14 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    @Lollersing: quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [CODE], così da mantenere indentazione e formattazione del listato.

    Correggo io.

    PS: true e false messi tra apici singoli direi proprio di no... l'apice singolo serve a marcare un singolo carattere... espressioni costanti come TRUE e FALSE vanno scritte in maiuscolo e senza alcun apice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    @Lollersing: quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [CODE], così da mantenere indentazione e formattazione del listato.

    Correggo io.

    PS: true e false messi tra apici singoli direi proprio di no... l'apice singolo serve a marcare un singolo carattere... espressioni costanti come TRUE e FALSE vanno scritte in maiuscolo e senza alcun apice.


    Ciao.
    Grazie mille del consiglio e mi scuso per la mancanza degli appositi tag, ma sono ancora nuovo e inesperto, comunque ho risolto grazie mille

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da Lollersing Visualizza il messaggio
    Grazie mille del consiglio e mi scuso per la mancanza degli appositi tag, ma sono ancora nuovo e inesperto, comunque ho risolto grazie mille
    trovata='true' e trovata='false'

    sono sbagliate. Semmai

    trovata=false e trovata=true

    Inoltre chiarisci come avviene il problema quando esegui.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.