Compiler-Fehlermeldung
-
Hallo,
ich bin blutiger Anfänger in der C-Programmierung und habe ein für mich nicht lösbares Problem in meinem geschriebenem Programm. Ich finde einfach den Fehler nicht, wäre schön, wenn Ihr mir helfen könntet.
typedef struct stab STAB_t;
struct stab
{
double XY_Angle, XZ_Angle; //Lagewinkel des Stabes
double E_Modul, G_Modul; //MaterialkenngröÃen
double AE, AYE, AZE, IYE, IZE, IT, LE; //GeometriekenngröÃen
};int main()
{
FILE *Var_Def;
int h, i, j;
STAB_t *STAEBE;printf("Vorhandene Datei bearbeiten? 1 = Ja 2 = Nein "); scanf("%d", &h);
if(h == 1)
{
Var_Def = fopen("/home/neubert/Programmierung/Var_Def.txt", "w+");
fscanf("%d", &i);printf("Stabanzahl = %d\n", i);
getchar();for (j = 0; j < i; j++)
{
fscanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf", &(STAEBE[j].XY_Angle), &(STAEBE[j].XZ_Angle), &(STAEBE[j].E_Modul), &(STAEBE[j].G_Modul), &(STAEBE[j].AE), &(STAEBE[j].AYE), &(STAEBE[j].AZE), &(STAEBE[j].IYE), &(STAEBE[j].IZE), &(STAEBE[j].IT), &(STAEBE[j].LE));
}
fclose(Var_Def);Die Daten werden wie folgt in diese Datei geschrieben:
printf("Moechten Sie Ihre Daten sichern? 1 = Ja 2 = Nein "); scanf("%d", &h);
if(h == 1)
{
Var_Def = fopen("/home/neubert/Programmierung/Var_Def.txt", "w+");
fprintf(Var_Def,"%d\n", i);for (j = 0; j < i; j++)
{
fprintf(Var_Def,"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n", STAEBE[j].XY_Angle, STAEBE[j].XZ_Angle, STAEBE[j].E_Modul, STAEBE[j].G_Modul, STAEBE[j].AE, STAEBE[j].AYE, STAEBE[j].AZE, STAEBE[j].IYE, STAEBE[j].IZE, STAEBE[j].IT, STAEBE[j].LE);
}
fclose(Var_Def);Beim Compelieren erhalte ich dann immer Fehlermeldung wie z.B.:
Var_Def.c: 24 : warning: passing arg 1 of "fscanf" from incompatible pointer type
Naja, ihr seht schon, ich komme nichtmal richtig mit dem Forumslayout klar und bin beruflich gezwungen mich in C von 0 auf 100 einzuarbeiten. Sowas kommt dann dabei heraus und ich gucke ziehmlich hilflos in die Röhre.
-
fscanf(Var_Def, "%d", &i);
-
Danke,
das hab ich glatt übersehen. Jetzt funktioniert es.
-
Ork schrieb:
Jetzt funktioniert es.
Von einigen Laufzeitfehlern abgesehen.
der Zeiger STAEBE sollte z. B. mit malloc initialsiert werden.
-
Hallo IUser,
danke für Deinen Hinweis, aber leider bekomme ich auch mit dieser Befehlszeile im Programm:
STAEBE = (STAB_t ) malloc (isizeof(STAB_t));
die richtige Adresse nicht hin. In der Datei selber werden die Eingegebenen Werte richtig abgespeichert, jedoch beim Laden (fscanf) sind dann falsche Werte zugewiesen. Werd mir mal ein einfaches Bsp. zur Hand nehmen, um herauszufinden was hier überhaupt passiert.
-
@Ork
Was mir auffällt ist, dass du beim Schreiben mit Tabulatoren arbeitest und beim Lesen mit Leerzeichen. Vielleicht solltest du das mal miteinander abstimmen.
-
Hallo AJ,
jetzt klappt es. Neben dem Arbeiten mit Tabulatoren / Leerzeichen war noch ein entscheidender Fehler beim Öffnen der Datei der falsche Zugriffsmodus "w+". Mit diesem Zugriffsmodus habe ich bewirkt, dass die Dateiinhalte gelöscht wurden. Mit dem Zugriffsmodus "r" war dann auch dieser Fehler behoben. Danke für Eure Hilfe, wird sicherlich nicht die letzte gewesen sein, die ich benötige.