Buongiorno, mi è stato dato come esercizio il creare una lista con dei nomi all'interno in ordine alfabetico dati in input, e dato un altro nome, stampare tutti i nomi cui iniziali sono dopo quella del nome dato in input(per esempio se nella lista ho Arcibaldo e Bertoldo, dato in input Anghistantte, dovrebbe essere stampato a video Bertoldo. Il mio codice funziona su tutto, tranne che sulla parte dello stampare il valore del nome, cui stampa ma con valori spazzatura. Ringrazio anticipatamente per le risposte.
C:
#include <stdio.h>
#include <stdlib.h>
int lArr();
char *studenti(int);
int main()
{
int index;int start;
int n = lArr();
char *studentiPtr = studenti(n);
char alfa[] = {"abcdefghijklmnopqrstuvwxyz"};
printf("inserisci la lunghezza del nome: ");
scanf("%d", &index);
char nome[index];
printf("inserisci il nome: ");
scanf("%s", nome);
char l = nome[0];
for (int i = 0;i < 26;i++){
if (l == alfa[i]){
start = i;
}
}
for (int k = 0;k < n;k++){
if (k > start){
printf("%s\n", &studentiPtr[k]);
}
return 0;
}
}
int lArr(){
int a;
printf("inserisci il numero di studenti che poi metterai in ordine alfabetico: ");
scanf("%d", &a);
return a;
}
char *studenti(int a){
char *arr;
arr = (char *) malloc(sizeof(char)*a);
for (int i = 0;i < a;i++){
printf("inserisci il nome dello studente: ");
scanf("%s", &arr[i]);
printf("%s\n", &arr[i]);
}
return arr;
}