[C++] Concatenare due stringhe con i puntatori

di il
6 risposte

[C++] Concatenare due stringhe con i puntatori

Non capisco dove sia l'errore....Mi copia solo la prima stringa e non la seconda nella stringa finale...
#include <iostream>
#include <cstring>
using namespace std;
const int np = 500;

char concatenazione (char* str1, char* str2, int dim1, int dim2) {
char* pstrf = new char [dim1 + dim2 + 1];

 for (int k = 0; k <= dim1 + dim2; k++){
  if (k <= dim1){
   pstrf[k] = *(str1 + k);
  }
  if (k > dim1){
   pstrf[k] = *(str2 + k);
  }
 }

cout << pstrf << endl;
}

int main () {
char strA[np];
char strB[np];
cout << "Inserire la prima stringa" << endl;
cin >> strA;
cout << "Inserire la seconda stringa" << endl;
cin >> strB;
char* pstrA = strA;
char* pstrB = strB;
int dimA = strlen(strA);
int dimB = strlen(strB);
char z = concatenazione (pstrA, pstrB, dimA, dimB);
}

6 Risposte

  • Re: [C++] Concatenare due stringhe con i puntatori

    Ci sono molte cose strane a partire da quel char

    Ma quello che è sbagliato sicuramente è quella for e l'iso di k
  • Re: [C++] Concatenare due stringhe con i puntatori

    oregon ha scritto:


    Ci sono molte cose strane a partire da quel char
    Ma quello che è sbagliato sicuramente è quella for e l'iso di k
    Si ok.. ma puoi essere un pò più preciso? Perchè così non so come aggiustarlo....
  • Re: [C++] Concatenare due stringhe con i puntatori

    Quando inizi a concatenare la seconda stringa devi iniziare a farlo da zero, non da k.
    La funzione concatenazione è dichiarata ritornare un char, ma non ci si trova alcun return. Inoltre deve proprio ritornare un char? perché?

    Metti a posto queste cose per iniziare.
  • Re: [C++] Concatenare due stringhe con i puntatori

    sebaldar ha scritto:


    Quando inizi a concatenare la seconda stringa devi iniziare a farlo da zero, non da k.
    La funzione concatenazione è dichiarata ritornare un char, ma non ci si trova alcun return. Inoltre deve proprio ritornare un char? perché?
    Metti a posto queste cose per iniziare.
    ok, la parte sul char l'ho capita, deriva dal fatto che ci ho fatto così tanti tentativi su quel foglio che mi sono dimenticato di modificarlo...Ma la parte sulla seconda stringa non l'ho capita, in che senso devo iniziare da zero? Non devo usare il ciclo for?E se sì in che modo?
  • Re: [C++] Concatenare due stringhe con i puntatori

    Della prima stringa stai copiando anche il carattere di terminazione \0, quindi quando stampi la stringa concatenata si ferma lì.
    quindi il primo if deve essere
    
    if (k < dim1){
    
    la seconda stringa la inizi a leggere da una posizione k, ma devi invece iniziare da zero
    
    if (k >= dim1){
    pstrf[k] = *(str2 + k - dim1);
    }
    
  • Re: [C++] Concatenare due stringhe con i puntatori

    sebaldar ha scritto:


    Della prima stringa stai copiando anche il carattere di terminazione \0, quindi quando stampi la stringa concatenata si ferma lì.
    quindi il primo if deve essere
    
    if (k < dim1){
    
    la seconda stringa la inizi a leggere da una posizione k, ma devi invece iniziare da zero
    
    if (k >= dim1){
    pstrf[k] = *(str2 + k - dim1);
    }
    
    GRAZIE MILLE, ora vedendo come l'hai fatto, ho capito l'errore e cosa intendevi per ripartire da zero. Ancora grazie, sei stato il mio salvatore.
Devi accedere o registrarti per scrivere nel forum
6 risposte