laenge ist ein char-Array, das kann nur einen String aufnehmen und nicht alle des String-Arrays.
Benenne dein int-Variablen mal vernünftig.
Globale Variablen sind Schrott.
Ebenso der größte Teil des Geschreibsels deines Professors auf der Seite.
Du solltest dir bewusst sein, dass du nach Absolvierung des Kurses dort nach wie vor nicht C programmieren kannst.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
char data[][10]={"Max","Moritz","Bolte","Boeck","Lempel","Maecke","Huckebein","Schlich","Helene","Antonius"};
char vBuf[128];
int main()
{
int ige,irt,ibl;
for (irt=0;irt < (N-1);irt++)
for (ige=irt+1;ige < N;ige++)
{
for (ibl=0; data[irt][ibl] == data[ige][ibl] && data[irt][ibl] != 0;ibl++) ; //Leeranweisung
if (data[irt][ibl] > data[ige][ibl])
{
char tmp;
for(ibl=0; ibl<10;ibl++)
{
tmp=data[irt][ibl];
data[irt][ibl]=data[ige][ibl];
data[ige][ibl]=tmp;
}
}
}
char (*dataneu)[10] = malloc( (N+1) * 10 );
memcpy( dataneu, data, sizeof data );
scanf("%9[^\n]",dataneu[N]);
for (irt=0;irt < (N);irt++)
for (ige=irt+1;ige < N+1;ige++)
{
for (ibl=0; dataneu[irt][ibl] == dataneu[ige][ibl] && dataneu[irt][ibl] != 0;ibl++) ; //Leeranweisung
if (dataneu[irt][ibl] > dataneu[ige][ibl])
{
char tmp;
for(ibl=0; ibl<10;ibl++)
{
tmp=dataneu[irt][ibl];
dataneu[irt][ibl]=dataneu[ige][ibl];
dataneu[ige][ibl]=tmp;
}
}
}
free(dataneu);
return 0;
}
http://ideone.com/ImLnHw
Ich hoffe du erkennst von selbst, dass die im Beispiel plakativ gewählte Codedopplung förmlich nach einer Auslagerung in eine eigene Funktion schreit.