Ciao a tutti, chi mi aiuta a svolgere questo esercizio?
Chiedere all’utente di fornire in input due array di stringhe di dimensione a piacere. Restituire in output un unico array, unione dei due precedenti, ordinato alfabeticamente.
Scrivere in un file gli array forniti in partenza e l’array risultato.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
#define MAXCHAR 100
void unione(char *A[], char *B[], char *C[], int n1, int n2);// esegue la fusione tra i due array in un unico array
void stampa(char *C[], int n3);
void ordinamento(char *C[], int n3);
void swap(char *a, char *b);
void main() { //inserimento dati
char *A[MAXCHAR];// primo array
char *B[MAXCHAR];//secondo array
char *C[MAXCHAR];//array risultante comprente tutti gli elementi del primo e tutti gli eleemnti del secondo
int n1, n2, n3;
n3 = n1 + n2;
int i;
printf("Inserisci il numero di elementi del primo vettore:\n");
scanf("%d", &n1);
for (i = 0; i < n1; i++) {
A[i] = (char*)malloc(MAXCHAR * sizeof(char));
printf("Inserisci il %d numero: ", i+1);
scanf("%s", A[i]);
}
printf("Inserisci il numero di elementi del secondo vettore:\n");
scanf("%d", &n2);
for (i= 0; i< n2; i++) {
B[i] = (char*)malloc(MAXCHAR * sizeof(char));
printf("Inserisci il %d numero: ", i+1 );
scanf("%s", B[i]);
}
unione(A, B, C, n1, n2);
free(A);
free(B);
free(C);
}
void unione(char *A[], char *B[], char *C[], int n1, int n2){ /*funziona che prende glie elementi del primo array
e gli elementi del secono array e li inserisce in un terzo array*/
int i;
for (i = 0; i < n1; i++) {
strcpy(C[i], A[i]);
}
for (i = 0; i < n2; i++) {
strcpy(C[n1 + i], B[i]);
}
for (int i = 0; i < n1 + n2; i++) {
printf("%d:%s\n", i, C[i]);
printf("\n");
}
sono bloccata qui, mi carica solo gli elementi degli array senza copiarli nel secondo array.
Grazie!