sebbel
26-10-2003, 19:22
Hi,
ich habe folgendes Problem. Ich würde gerne eine Verzeichnisliste (sortiert ausgeben).
Doch wenn ich das Programm so kompiliere, wie ich es hier abgebildet habe, so bekomme ich nach dem Ausführen immer ein Speicherzugriffsfehler.
Ich konnte den Fehler mitlerweile einkreisen auf die Zeile mit
test[i]=(*dirzeiger).d_name;
jedoch weiß ich nicht, wie ich es anders realisieren sollte einen "Stack" aus char * zu erstellen !?
Ich hoffe einer von Euch kann mir helfen, wie man ein Array aus Zeichenketten erstellt und benutzt.
Ich danke Euch für Eure Hilfe
Gruß
Sebastian
t#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
int main()
{
DIR *dir;
struct dirent *dirzeiger;
char * test[]={};
int maxi=0,i=0;
if((dir=opendir("/usr")) != NULL) {
while((dirzeiger=readdir(dir)) != NULL) {
test[i]=(*dirzeiger).d_name;
i++;
}
maxi=i;
closedir(dir);
// Sortieren
char *temp="test";
int j = 0;
for(i=0; i<maxi; i++)
{
for(j=i+1; j<maxi; j++)
{
if((strcmp(test[i],test[j])>0))
{
temp=test[i];
test[i]=test[j];
test[j]=temp;
}
}
}
// Ausgabe
for (i=0;i<maxi;i++) printf("%s\n",test[i]);
printf("Dateien : %i\n",maxi);
}
else {
printf("Konnte Verzeichnis nicht öffnen");
}
return (0);
}
ich habe folgendes Problem. Ich würde gerne eine Verzeichnisliste (sortiert ausgeben).
Doch wenn ich das Programm so kompiliere, wie ich es hier abgebildet habe, so bekomme ich nach dem Ausführen immer ein Speicherzugriffsfehler.
Ich konnte den Fehler mitlerweile einkreisen auf die Zeile mit
test[i]=(*dirzeiger).d_name;
jedoch weiß ich nicht, wie ich es anders realisieren sollte einen "Stack" aus char * zu erstellen !?
Ich hoffe einer von Euch kann mir helfen, wie man ein Array aus Zeichenketten erstellt und benutzt.
Ich danke Euch für Eure Hilfe
Gruß
Sebastian
t#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
int main()
{
DIR *dir;
struct dirent *dirzeiger;
char * test[]={};
int maxi=0,i=0;
if((dir=opendir("/usr")) != NULL) {
while((dirzeiger=readdir(dir)) != NULL) {
test[i]=(*dirzeiger).d_name;
i++;
}
maxi=i;
closedir(dir);
// Sortieren
char *temp="test";
int j = 0;
for(i=0; i<maxi; i++)
{
for(j=i+1; j<maxi; j++)
{
if((strcmp(test[i],test[j])>0))
{
temp=test[i];
test[i]=test[j];
test[j]=temp;
}
}
}
// Ausgabe
for (i=0;i<maxi;i++) printf("%s\n",test[i]);
printf("Dateien : %i\n",maxi);
}
else {
printf("Konnte Verzeichnis nicht öffnen");
}
return (0);
}