Hi allerseits,
ich bereite mich gerade auf eine Klausur vor und ein Teil einer Aufgabe besteht darin, ein kurzes C-Programm zu schreiben. Es geht um ein kurzes Hauptprogramm, dem ein Dateiname als Parameter übergeben wird und das die Inumber des Knotens zurückgeben soll. Hierfür soll der Systemaufruf int stat(const char *filename, struct stat *buf) verwendet werden.
Lange Rede, hier die Fakten. Meine erste Version des Programms war das hier:
Wenn ich das Programm so laufen lasse, bekomme ich einen Speicherzugriffsfehler. Sobald ich die erste printf-Zeile einkommentiere, läuft das Programm durch :shock:
Ich habe ehrlich gesagt keine Idee, woran das liegen könnte *grübel* Hat jemand eine Erklärung dafür?
EDIT
Hm, da scheint noch mehr falsch zu sein *grübel* Auch bei der Ausgabe von argc am Ende bekomme ich einen Speicherzugriffsfehler :shock:
Es wird wohl Zeit, dass ich ins Bett gehe :?
EDIT2
Habe den Fehler gefunden. Es lag an dem buf-Zeiger. Mit
funktioniert es. Hat trotzdem noch jemand eine Erklärung für mich?
ich bereite mich gerade auf eine Klausur vor und ein Teil einer Aufgabe besteht darin, ein kurzes C-Programm zu schreiben. Es geht um ein kurzes Hauptprogramm, dem ein Dateiname als Parameter übergeben wird und das die Inumber des Knotens zurückgeben soll. Hierfür soll der Systemaufruf int stat(const char *filename, struct stat *buf) verwendet werden.
Lange Rede, hier die Fakten. Meine erste Version des Programms war das hier:
Code:
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
struct stat *buf;
// printf("Hallo\n");
if((a = stat(argv[1],buf))==-1)
{
printf("Fehler\n");
return -1;
}
printf("%d\n",buf->st_ino);
return buf->st_ino;
}
Wenn ich das Programm so laufen lasse, bekomme ich einen Speicherzugriffsfehler. Sobald ich die erste printf-Zeile einkommentiere, läuft das Programm durch :shock:
Ich habe ehrlich gesagt keine Idee, woran das liegen könnte *grübel* Hat jemand eine Erklärung dafür?
EDIT
Hm, da scheint noch mehr falsch zu sein *grübel* Auch bei der Ausgabe von argc am Ende bekomme ich einen Speicherzugriffsfehler :shock:
Code:
printf("%d\t%d\n",buf->st_ino,argc);
Es wird wohl Zeit, dass ich ins Bett gehe :?
EDIT2
Habe den Fehler gefunden. Es lag an dem buf-Zeiger. Mit
Code:
struct stat buf;
if((a = stat(argv[1],&buf))==-1)
....
funktioniert es. Hat trotzdem noch jemand eine Erklärung für mich?