Hallo ich bin Schüler und fange gerade an mich mit C zu beschäftigen.
Habe von meinem Lehrer eine Aufgabe zu EM bekommen. ICh soll aus eine
csv Datei Daten einlesen und dann weiter bearbeiten.Leider komme ich
nicht über das erste if hinaus. Kann mir jemand sagen wo mein Fehler
liegt?
Schüler94 schrieb:> Leider komme ich nicht über das erste if hinaus.> Kann mir jemand sagen wo mein Fehler liegt?
der besteht darin, daß du nicht beschreibst, warum du "nicht über das
erste if hinaus kommst".
Gibt es einen Übersetungsfehler des Compilers, oder wird eine andere
Datei geöffnet, oder schaltet sich die Kaffemaschine statt dessen ein,
oder was passiert anstelle dem was du erwartest?
Kleiner Tip noch: Wenn du innerhalb der Abfrage statt printf() die
Funktion perror() nutzt, wird auch ausgegeben, welcher Fehler
aufgetreten ist.
Dazu mußt du nur perror() statt printf() nutzen und das \n am Schluß
wegmachen (perror schließt die Zeile für dich ab).
Und wenn du die Datei dann öffnen kannst, dann rate ich dir dringend
dazu, deinen Code NICHT Zeichen an Zeichen auf Knirsch zu schreiben. Du
DARFST zwischen "Wörter" Leerzeichen einstreuen. Du darfst dort auch die
Zeilen umbrechen. Gerade bei den typischen langen Argumentlisten zu
scanf (in deinem Fall fscanf) ist es besonders wichtig, dass man leicht,
schnell und fehlerfrei die Zuordnung des Symbols in der Formatliste zur
Variablen herestellen kann
steht im Formatstring ein %d, dann musst du die Adresse eines int
angeben. Das tust du aber nicht! da fehlen ein paar &
Bei einem %s allerdings, ist der Name des Arrays bereits die Adresse. Da
braucht man dann keine &
Schüler94 schrieb:> Er kann die Datei nicht öffnen ich weis aber nicht warum.
* Die Datei ist am richtigen Ort
* Tippfehler in Datei oder Pfadangabe
* Datei in einem anderen Programm geöffnet
* Von einem vorhergehenden Versuch ist die Datei im Betriebssystem
als geöffnet markiert
* Keine Berechtigung, die Datei von dort zu öffnen
* ....
Da gibts viele Möglichkeiten
Schüler94 schrieb:> LeseDaten = fopen("C:\\Benutzer\\test\\xt.csv","r");
^^
funktioniert das Öffnen der Dateien so?
Ich hatte mal irgendwelche Probleme, durch diese
Windows-Phantasie-Namen.
Was man auch häufig beobachten kann:
Der Explorer Zeigt das Verzeichnis C:\Programme zwar an, installiert man
aber ein Programm explizit nach C:\Programme hat man auf einmal 2
Verzeichnisse diesen Namens. Vorauswahl ist in den Installern auch meist
c:\program files, wo nach erfolgreicher Installation das Programm dann
unter c:\Programme auftaucht.
Was ich sagen will: vielleicht ist das ein Problem mit diesen virtuellen
Windows-Datei/Pfad-Namen.
leg mal deine Datei in einen selbsterstellten Ordner direkt unter C (und
vergiss nicht den neuen Pfad einzucodieren)
Schüler94 schrieb:> while((fscanf(LeseDaten, "%d,%d,%s,%s,%d,%s,%d,%d\n",> xSpieler[x].trikot,xSpieler[x].position_code,xSpieler
%d-Argumente erwarten einen Zeiger, wo der Wert hingeschrieben werden
kann:
& xSpieler[x].trikot
Die %s-Parameter sind ok so.
>Schüler94 schrieb:>> LeseDaten = fopen("C:\\Benutzer\\test\\xt.csv","r");
^^
>funktioniert das Öffnen der Dateien so?
das muss mit ziemlicher Sicherheit c:\Users\test\... lauten
Robert L. schrieb:> das muss mit ziemlicher Sicherheit c:\Users\test\... lauten
das ist doch schrott.
Ich hab immer noch XP aber bei meinem Bruder oder Eltern die Vsta/win7
haben hat mich das angekotzt.
Man bekommt überall verschiedene Namen für das selbe Verzeichnis und je
nach Kontext ist nur einer richtig.
Entweder man macht das ganze richtig und das OS handelt es komplett
intern und der Benutzer/Programmierer bekommt gar nix davon mit, oder
man lässt es ganz.
Vlad Tepesch schrieb:> Entweder man macht das ganze richtig und das OS handelt es komplett> intern und der Benutzer/Programmierer bekommt gar nix davon mit, oder> man lässt es ganz.
Als Programmierer benutzt du einfach die Windows API und gut ist.
Man baut Programme "schichtenweise" auf, die man jeweils einzeln testet,
dann findet man auch schneller die Fehler. Und man macht erst dann mit
dr nächsten Schicht weiter, wenn die darunter liegende Schicht läuft.
Also z.B.:
- datei öffnen, schliessen ... Datei gefunden, Handle true?
- aus Datei Zeile für Zeile lesen (und anzeigen) bis Ende . Wird sauber
auf EOF reagiert, gibts keine Exception?
- dann die gelesenen Zeilen an den Kommata teilen, anzeigen
- usw.
was? schrieb:> Vlad Tepesch schrieb:>> Entweder man macht das ganze richtig und das OS handelt es komplett>> intern und der Benutzer/Programmierer bekommt gar nix davon mit, oder>> man lässt es ganz.>> Als Programmierer benutzt du einfach die Windows API und gut ist.
Das is jetzn Scherz, oder?
Es geht doch darum, anhand eines kleinen Beispiels C zu lernen.
Und nicht darum, wie man um ein verkorxtes Betriebssystem rumhackt und
sich nebenbe noch mehr Systemabhängigkeiten reinzieht.