![]() |
Du hast bei deinem letzten code geschrieben:
if(strlen(wert)) Da scheint durchs Forum wieder mal was verschwunden sein, oder!? if(strlen(wert) == 5) {} ...mit 5 müssten sich ja dann die 4 Zahlen darstellen lassen, oder? Viele Grüße, Harri:cool: |
das "if(strlen(wert))" entspricht "if(strlen(wert) != 0)". Das ergibt sich dadurch, dass in C/C++ 0 dem Wert false und alles andere true entspricht. Funktioniert also.
5 würden für 4 Zahlen (plus \0) ausreichen. << "C:\\Programme\\Microsoft Games\\FS2002\\Gauges\vsi.txt" >> Da fehlt noch ein Backslash vor "vsi.txt". Könnte es das sein? |
Hallo Hans!
Nein, den backslash hab ich sonst immer gehabt...hab ich nur jetzt im Forum vergessen. Kann es sein dass das Leerzeichen bei Microsoft Games Probleme bereitet???
Das Gauge selbst funktioniert aber auch noch nicht ganz einwandfrei: Leider erzeugt der code immer noch 5 Fehler und 2 Warnungen. Viele Grüße, Harri:cool: #include <stdio.h> #define datei "gauge.txt" FILE *pfile; char wert[4]; pfile=fopen(datei, "r"); //existiert Datei? if(pfile) { fscanf(pfile,"%s",wert); //steht was drin? if(strlen(wert)) { farbe_max=atoi(wert); farbe_min= - atoi(wert); } fclose(pfile); } |
Wie wäre es mit folgender Variante:
#include [stdio.h] // durch spitze Klammern ersetzen #define datei "gauge.txt" // Keine Pfadangabe = FS2002-Pfad!!! int farbe_max, farbe_min; FILE *f // Schreiben f = fopen(datei, "w"); if (f) { printf(f, "%d", farbe_max); fclose(f); // fclose() nur dann, wenn fopen() geklappt hat } // Lesen f = fopen(datei, "r"); if (f) { fscanf(f, "%d", &farbe_max); farbe_min = -farbe_max; fclose(f); // fclose() nur dann, wenn fopen() geklappt hat } Wenn Du trotzdem atoi() einsetzen willst, dann musst Du die stdlib.h noch mit includen. |
Hallo!
Danke für den Code, aber es ist immer noch der gleiche erste Error:
Da muss der Fehler doch irgendwo anders liegen, denn sowohl mein Code(der in Turbo C++ gut funktioniert), Arne's Code und dein Code fangen mit dem gleichen Error an...:rolleyes: error C2040: 'f' : 'int ' differs in levels of indirection from 'struct _iobuf *' mfg harri:cool: |
Könntest Du eventuell zu dem Error auch die Zeilennummern im Code angeben? Damit wir wissen zu welcher Zeile welcher Error gehört.
Arne Bartels |
Voila'
Von MSDN-zum error:
Compiler Error C2040 'operator' : 'identifier1' differs in levels of indirection from 'identifier2' An expression involving the specified operator had inconsistent levels of indirection. If both operands are of arithmetic type or if both are not (such as array or pointer), then they are used without change. If one operand is arithmetic, but the other is not, the arithmetic operator is converted to the type of the other operator. //------------------------------------------------------- C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(44) : error C2040: 'f' : 'int ' differs in levels of indirection from 'struct _iobuf *' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(44) : error C2099: initializer is not a constant C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(45) : error C2059: syntax error : 'if' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(215) : warning C4554: '&' : check operator precedence for possible error; use parentheses to clarify precedence C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(221) : warning C4554: '&' : check operator precedence for possible error; use parentheses to clarify precedence C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(233) : warning C4554: '|' : check operator precedence for possible error; use parentheses to clarify precedence C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(283) : warning C4554: '|' : check operator precedence for possible error; use parentheses to clarify precedence Error executing cl.exe. vs3.gau - 3 error(s), 4 warning(s) |
Ne ich meinte im Code dazu auch irgendwie die Zeilennummern anbringen, es reicht ja eine zu Beginn dann kann man weiterzählen.
Übrigens Hans' code funktioniert im Wesentlichen: Code:
#include <stdio.h> |
ich hab dir die zeile 34 angezeichnet!
direkt unter //schreiben #include <stdio.h> #define datei "gauge.txt" // Keine Pfadangabe = FS2002-Pfad!!! int farbe_max=3000, farbe_min=-3000; FILE *f; // Schreiben 34.)f = fopen(datei, "w"); if (f) { fprintf(f, "%d", farbe_max); fclose(f); // fclose() nur dann, wenn fopen() geklappt hat } // Lesen f = fopen(datei, "r"); if (f) { fscanf(f, "%d", &farbe_max); farbe_min = -farbe_max; fclose(f); // fclose() nur dann, wenn fopen() geklappt hat } |
Ist das #include oder #include <stdio.h> ?
Arne Bartels |
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag