Concatenazione di stringhe

di il
6 risposte

Concatenazione di stringhe

Buonasera,
il programma chiede questo: "Scrivere una funzione con la seguente interfaccia: void concat(char s1[], char s2[], char s3[]), che ponga nella stringa s3 la concatenazione delle stringhe s1 e s2. Per esempio: se s1="eta", s2="beta", al ritorno dalla chiamata a concat() si deve avere s3="etabeta"."

Sono riuscito a scrivere il codice da solo fino al primo for della procedura. Il secondo for non riesco a capirlo, qualcuno può spiegarmelo? Inoltre anche s3[j] = '\0' non riesco a capire. (Questa parte è presa da internet).
#include <iostream>
#define MAX 100
#include <cstring>
using namespace std;

void concat(char s1[], char s2[], char s3[]){
	int i;
	int j;
	
	for (i=0; s1[i] != '\0'; i++) s3[i] = s1[i]; 
	for (j=i,i=0; s2[i] != '\0'; i++,j++) s3[j] = s2[i];        //non capisco
	s3[j] = '\0';  							// non capisco
}

int main () {
	char c[MAX];
	char e[MAX];
	char d[MAX];
	
	cout << "Inserisci stringa 1: ";
	cin >> c;
	
	cout << "Inserisci stringa 2: ";
	cin >> e;	
	
	concat(c,e,d);
	
	cout << "La stringa e': " << d;
}

6 Risposte

  • Re: Concatenazione di stringhe

    Cosa non capisci esattamente? Sono linee semplici, non hai provato a spiegartele ?
  • Re: Concatenazione di stringhe

    Io avevo pensato ad una cosa tipo: Faccio il for per s2 e faccio s3 = s1+s2. Una cosa del genere. Non sono bravo in programmazione ho solo un esame a breve e vorrei risolvere questi problemi.
  • Re: Concatenazione di stringhe

    Non capisco la risposta.

    dato che s1 e s2 sono puntatori scrivere s1+s2 non ha senso.

    Ripeto ... cosa non capisci della soluzione proposta, ovvero del secondo for?
  • Re: Concatenazione di stringhe

    Perchè j=i ed i = 0? Vedi se ho capito.
    Se io pongo solo j=0 nel secondo for nel terzo vettore mi stamperà soltanto uno dei due vettori giusto? Questa è la spiegazione? Allora devo fare in modo che s1 ed s2 si uniranno ed il loro valore sarà assegnato ad s3
  • Re: Concatenazione di stringhe

    S3 è la concatenazione delle due stringhe.
    il primo for ci butta i caratteri presenti in s1.
    il secondo quelli di s2.
    esempio:
    s1 = "ciao"
    s2 = "miao"
    s3 = ""
    dopo il primo for
    s3 = "ciao"
    dopo il secondo for
    s3 = "ciaomiao"

    quel carattere \0 è messo affinché s3 sia una stringa e non un array di caratteri (\0 è il terminatore di stringa).
    ti do un consiglio: quando non sai cosa fare scriviti sul foglio passo per passo il tuo algoritmo! ti disegni 3 array: uno con ciao, uno con miao e uno vuoto. fai il for passo per passo e vedi cosa succede a s3. tu dirai "ma è una cosa stupida, ne faccio a meno" ma fidati di me, non sai quanto è utile farsi tutti i passetti uno alla volta quando non capisci una cosa o quando devi individuare un errore.
  • Re: Concatenazione di stringhe

    Grazie mille veramente! Siete veramente di grande aiuto!
    Ritornerò...
Devi accedere o registrarti per scrivere nel forum
6 risposte