Δεν μας είπες αν γνωρίζουμε όμως το μέγεθος του πίνακα. Αν τα ονόματα που θες να εισάγεις στον πίνακα είναι συγγεκριμένου αριθμού τότε:
Έστω 10 ονόματα και μέγιστο αριθμό γραμμάτων 50:
#include<stdio.h>
#define N 10
#define M 50
main(){
char s[N][M];
int i;
for(i=0;i<N;i++)
scanf("%s", s[i]);
for(i=0;i<N;i++)
printf("%s\n", s[i]);
}
ή αυτό με την εντολή malloc:
#include<stdio.h>
#include<stdlib.h>
#define N 10
main(){
char *s[N];
int i;
for(i=0;i<N;i++)
s[i]=(char *)malloc(50*sizeof(char));
for(i=0;i<N;i++)
scanf("%s", s[i]);
for(i=0;i<N;i++)
printf("%s\n", s[i]);
}
Αν όμως δεν γνωρίζεις εκ των προτέρων τον αριθμό ονομάτων κτλ τότε θα πρέπει να χρησιμοποιήσεις την εντολή malloc 2 φορές.
#include<stdio.h>
#include<stdlib.h>
main(){
char **s;
int i, count;
scanf("%d", &count);
s=(char **)malloc(count*sizeof(char *));
for(i=0;i<count;i++)
s[i]=(char *)malloc(50*sizeof(char));
for(i=0;i<count;i++)
scanf("%s", s[i]);
for(i=0;i<count;i++)
printf("%s\n", s[i]);
}
Γενικά αντί για 50 μπορείς να δηλώσεις έναν απλά μεγάλο αριθμό, που θα υπερκαλύπτει το μέγιστο πλήθος γραμμάτων ενός ονόματος.