• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Unire due stringhe in C

pe.pp.e

Utente Medio
Autore del topic
10 Aprile 2012
101
0
Miglior risposta
0
Salve a tutti.Dovrei modificare il seguente programma in modo tale che il risultato della visualizzazione sia "Comprimere"...ho scritto il codice,ma non so perchè non funziona nel modo corretto.Chiedo quindi a voi un aiuto.Grazie in anticipo!!!!!


#include <string.h>
#include <stdio.h>
#include<stdlib.h>
void main()
{
char p3[10]; //dichiaro la stringa che conterrà la parola comprimere!!!;
const char *p1, *p2;
p1 = strchr(" Comp ",'C');
p2 = strchr("rare attare rimere",'r');
strncpy(p3,&p1[0],4); //copio Comp della stringa p1 in p3 eliminando il carattere terminatore;
strcat(&p3[4],&p2[12]); //unisco rimere della stringa p2 con la stringa p3;
printf("La stringa e':%s",p3);

system("pause");
}
 
Riferimento: Unire due stringhe in C

Salve a tutti.Dovrei modificare il seguente programma in modo tale che il risultato della visualizzazione sia "Comprimere"...ho scritto il codice,ma non so perchè non funziona nel modo corretto.Chiedo quindi a voi un aiuto.Grazie in anticipo!!!!!


#include <string.h>
#include <stdio.h>
#include<stdlib.h>
void main()
{
char p3[10]; //dichiaro la stringa che conterrà la parola comprimere!!!;
const char *p1, *p2;
p1 = strchr(" Comp ",'C');
p2 = strchr("rare attare rimere",'r');
strncpy(p3,&p1[0],4); //copio Comp della stringa p1 in p3 eliminando il carattere terminatore;
strcat(&p3[4],&p2[12]); //unisco rimere della stringa p2 con la stringa p3;
printf("La stringa e':%s",p3);

system("pause");
}

Prova ad usare il +
 
Riferimento: Unire due stringhe in C

Due errori :

1) deve essere

char p3[11];

perché devi prevedere sempre il carattere terminatore per le stringhe. Quindi "Comprimere" è di 10 caratteri + 1 per il terminatore

2) dopo la

strncpy(p3, p1, 4);

devi aggiungere il terminatore perché la seguente strcat ne tiene conto per aggiungere la nuova stringa. Quindi prima della strcat

p3[4]='\0';


P.S. @Stoker ... + si usa in C++ con la classe string, ma in C l'operatore + non lavora con il contenuto delle stringhe ma solamente con i puntatori.
 
Riferimento: Unire due stringhe in C

ok grazie per l'aiuto ora funziona tutto alla grande....solo un ultima cosa....non ho ben capito perchè ho dovuto mettere p3[4]='\0';...cioè il mio scopo era eliminare il carattere terminatore,non aggiungerlo....per questo non ho ben capito questo passaggio!!!!!
 
Riferimento: Unire due stringhe in C

Se leggi la documentazione

Perfavore, Entra oppure Registrati per vedere i Link!


della funzione strcat noterai che dice

Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination

e quindi è necessario che la stringa di destinazione abbia il terminatore.