Stringhe e puntatori

di il
1 risposte

Stringhe e puntatori

Ciao, stavo facendo un esercizio con stringhe e puntatori, il codice sembra corretto l'output no..
il problema è:
con inserimento stringhe inferiore a 4 caratteri l'output scrive caratteri non digitati..

#include <cstdlib>
#include <iostream>
#include <stdio.h>

using namespace std;

/*
 * Dichiarare due stringhe di uguale dimensione. Acquisire in una stringa una 
 * sequenza di caratteri, quindi copiare, usando i puntatori, tutti i caratteri 
 * dalla stringa acquisita all'altra, accedendo in modo indiretto a ciascuna 
 * delle locazioni delle due stringhe.. 
 */

int main(int argc, char** argv) {

    char st1[10];
    char st2[10];
    
    char *p1, *p2;
    
    cout << "Inserisci caratteri: ";
    cin.getline(st1, sizeof(st1));
    
    fflush(stdin);
    
    p1 = &st1[0];
    p2 = &st2[0];
    
    do{
        *p2 = *p1;
        p1++, p2++;
    }while(*p1!='\0');
    
    cout << st2;
    
    return 0;
}

OUTPUT: (fino al 4° carattere ovvero pos 3 da li in poi sempre corretto...)
Inserisci caratteri: c
cï a
RUN SUCCESSFUL (total time: 734ms)
----------------------------------------------
Inserisci caratteri: ci
ci a
RUN SUCCESSFUL (total time: 2s)
----------------------------------------------
Inserisci caratteri: cia
ciaa
RUN SUCCESSFUL (total time: 3s)
----------------------------------------------
Inserisci caratteri: ciao
ciao
RUN SUCCESSFUL (total time: 2s)

1 Risposte

  • Re: Stringhe e puntatori

    Manca il terminatore di stringa nella nuova stringa
    while(*p1!='\0');
    
        *p2='\0';
Devi accedere o registrarti per scrivere nel forum
1 risposte