Problema stringhe

di il
3 risposte

Problema stringhe

Ho un problema con questo esercizio.
appena parte l'esecuzione di conc, smette i funzionare
[code/*Scrivere una funzione che date tre stringhe A, B e C concateni in C il contenuto
di A e B e restituisca il numero di caratteri copiati in C:*/

#include<stdio.h>
#include <string.h>
#define A 100
#define B 100
#define C 200

int carica(char ve1[],int n, char vet2[],int m);
int conc(char vet1[],char vet2[],char vet3[]);

int main ()
{
char vet1[A], vet2[B], vet3[C];
int n, m;
printf("inserisci il numero di elementi di vet1: ");
scanf("%d",&n);
printf("inserisci il numero di elementi di vet2: ");
scanf("%d",&m);
carica(vet1,n,vet2,m);
conc(vet1,vet2,vet3);
conc2(vet1,vet2,vet3);
printf("%s",conc(vet1,vet2,vet3));
printf("\n\n%s",conc2(vet1,vet2,vet3));

}

int carica(char vet1[],int n, char vet2[],int m)
{
int i,j;
for(i=0;i<n;i++)
{
printf("\nInserisci elemento di vet1 = ",i);
scanf("%s",&vet1);
}
for(j=0;j<m;j++)
{
printf("\nInserisci elemento di vet2 = ",j);
scanf("%s",&vet2[j]);
}
return 0;
}

int conc(char vet1[],char vet2[],char vet3[])
{
int result;

strcpy(vet3, vet1);
strcpy(&vet3[strlen(vet3)], vet2);

result = (int)strlen(vet3);

return result;
}

int conc2 (char vet1[], char vet2[], char vet3[]) {
int result=0;

while(*vet1 != '\0')
{
*vet3 = *vet1;
vet3++; vet1++;
result++;
}
while(*vet2 != '\0')
{
*vet3 = *vet2;
vet3++; vet2++;
result++;
}
*vet3 = '\0';

return result;
}][/code]

3 Risposte

  • Re: Problema stringhe

    Utilizza i tag CODE correttamente per il codice altrimenti è difficile rispondere

    E poi

    conc2

    non esiste
  • Re: Problema stringhe

    /*Scrivere una funzione che date tre stringhe A, B e C concateni in C il contenuto
    di A e B e restituisca il numero di caratteri copiati in C:*/
    
    #include<stdio.h>
    #include <string.h>
    #define A 100
    #define B 100
    #define C 200
    
    int carica(char vet1[],int n, char vet2[],int m);
    int conc(char vet1[],char vet2[],char vet3[]);
    int conc2 (char vet1[], char vet2[], char vet3[]);
    
    int main ()
    {
    	char vet1[A], vet2[B], vet3[C];
    	int n, m;
    	printf("inserisci il numero di elementi di vet1:  ");
    	scanf("%d",&n);
    	printf("inserisci il numero di elementi di vet2:  ");
    	scanf("%d",&m);
    	carica(vet1,n,vet2,m);
    	conc(vet1,vet2,vet3);
    	conc2(vet1,vet2,vet3);
    	printf("%s",conc(vet1,vet2,vet3));
    	printf("\n\n%s",conc2(vet1,vet2,vet3));
    	
    }
    
    int carica(char vet1[],int n, char vet2[],int m)
    {
    		int i,j;
    	for(i=0;i<n;i++)
    	{
    		 printf("\nInserisci elemento di vet1  =  ",i);
            scanf("%s",&vet1[i]);
    }
       	for(j=0;j<m;j++)
    	{
    		 printf("\nInserisci elemento di vet2  =  ",j);
            scanf("%s",&vet2[j]);
    }
    return 0;
    }
    
    int conc(char vet1[],char vet2[],char vet3[])
    {
    	int result;
        
        strcpy(vet3, vet1);
        strcpy(&vet3[strlen(vet3)], vet2);
        
        result = (int)strlen(vet3);
        
        return result;
    }
    
    int conc2 (char vet1[], char vet2[], char vet3[]) {
        int result=0;
        
        while(*vet1 != '\0')
        {
            *vet3 = *vet1;
            vet3++; vet1++;
            result++;
        }
        while(*vet2 != '\0')
        {
            *vet3 = *vet2;
            vet3++; vet2++;
            result++;
        }
        *vet3 = '\0';
        
        return result;
    }
    
  • Re: Problema stringhe

    Forse non hai compreso il problema ...

    Perché in input chiedi il "numero di elementi" di vet1 e poi chiedi tante stringhe?
    Non ha senso parlare di "numero di elementi del vettore" ... qui si parla di stringhe.

    Devi solo chiedere in input 2 stringhe e passarle ad una sola funzione che deve restituire la terza stringa (concatenata) e il numero totale di caratteri copiati.
Devi accedere o registrarti per scrivere nel forum
3 risposte