?
Hallo.
Ja das stimmt, nur Übung macht den Meister.
Aber ich denke es haut jetzt hin, der compiler war zufrieden (auch wenn das nix heissen muss).
[cpp]/***********************************************/
/* Pointer als Funktionenparamter */
/* Zugriff auf Vektorelemente über Pointer */
/* Datei Ein-/Ausgabe */
/* */
/* xx.xx.2007 xxx */
/***********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#define NAME 50
#define LAENGE 20
int pruefealphabet (char *p_name1,char *p_name2 ); //Funktionsdeklaration
void namentausch (char *p_name1,char *p_name2 ); //Funktionsdeklaration
int i_status;
int main ()
{
// Variablendefinitionen und Feldinitialisierung
char p_name [NAME][LAENGE]={0};
char DateiName[10];
FILE *pNAMEN;
int i=0,i_vertauschstatus,i_counter=0;
//Abfrage des Dateinamens
printf("\nBitte Dateinamen eingeben:");
scanf ("%s",DateiName);
//Datei öffnen mit Fehlerbehandlung
if((pNAMEN=fopen(DateiName,"r"))==NULL)
{
printf("\nFehler beim Oeffnen der Datei %s",DateiName);
return(-1); //Fehlercode zurück ans Betriebssystem
}
printf("\nDatei %s wurde erfolgreich geoeffnet-Daten werden eingelesen\n",DateiName);
//Daten wortweise einlesen bis Dateiende--->feof
for(i; !feof(pNAMEN); i++)
{
fgets(&p_name[i][0], 100, pNAMEN);
i_counter++;
}
i_counter--;
//eigentliche Überprüfung auf Rangfolge, mit anschließendem evtl.vertauschen durch Funktionen
do
{i_vertauschstatus=0;
for(i=0;p_name[i+1][0]!=0;i++)
{ if(i==(NAME-1))
break;
i_status=pruefealphabet (&p_name[i][0],&p_name[i+1][0]);
if(i_status==-1)
{
namentausch(&p_name[i][0],&p_name[i+1][0]);
i_vertauschstatus=1;
}
}
}while(i_vertauschstatus==1);
//Bildschirmausgabe
for(i=0;i<i_counter;i++)
{
printf(p_name[i]);
}
return 0;
}
//Funktion zur Feststellung der alphabetischen Reihenfolge
int pruefealphabet (char *name1,char *name2)
{
int j=0,i_zeichen1,i_zeichen2,len1=0,len2=0;
//Bestimmung der Länge der Strings zur Verwendung als Abbruchbedingung
len1=strlen(name1)-1;
len2=strlen(name2)-1;
/*printf("\n%d\n",len1);
printf("%d\n",len2);*/
//Prüfung auf Reihenfolge,ansonsten <Return i_status=0>, wenn kein Unterschied bis stringende
for (j=0; j!=len1 || j!=len2 ;j++)
{
i_zeichen1=name1[j];
i_zeichen2=name2[j];
if (i_zeichen1<i_zeichen2)
{
i_status= 1;
break;
}
if (i_zeichen1>i_zeichen2)
{
i_status= -1;
break;
}
}
return i_status;
}
//Funktion zum Tauschen zweier Namen
void namentausch (char *name1,char *name2)
{
char temp[LAENGE];
strcpy(temp,name1);
strcpy(name1,name2);
strcpy(name2,temp);
}[/cpp]
Danke für die Hilfe