Aufgabe ausem Studium, Verständis frage
-
Hallo zusammen,
ich bin der neue ^^Ich bin im mom an der FH Köln als Informatikstudent, bis jetzt war alles recht locker und gut zu schaffen.
Aer an der Aufgabe 2. in diesem PDF scheitere ich zurzeit.
Zusammengefasst: Ich soll Zahlen aus einer Datei einlesen und dann Zeilenweise Ausgeben, immer 7 Zahlen in einer Zeile, dies ist auch kein Problem. Mein Problem ist es einfach die Zahlen in ein Array zu schreiben.
Bisher habe ich es nur geschaft die Datei einzulesen und dann das Zeichen auszugeben. Alle Versuche die Zeichen in das Array in zu Kopieren sind gescheitert.
`#include <stdio.h>
#include <stdlib.h>
#include </home/ai988/header.c>
int main(){
header("Datei einlesen");
FILE *try;
int i=0;
char in[100];
if((try=fopen("werte.dat","r")) == NULL){
printf("\nDatei nicht vorhanden.\n");
}else{
while(fscanf(try,"%s",in[i]) != EOF){
i++;
}
fclose(try);
}
printf("%d\n",(int) &in[1]);
exit(0);
}
`
Ich habe gelsen das ich so etwas wie einen Buffer verwenden muss, nur ist mir schleierhaft wie das gehen soll oO
Und das was ich bei Google finde macht mich auch nich schlauer
Bin für jede Hilfe dankbar.mfg Nerosmeel
-
^^ du sollst doch integer-werte einlesen (fscanf:%d) keine strings (fscanf:%s). und jeden wert schreibst du dann in das array int in[100] (also aus char int machen). damit hast du schon deinen buffer.
-
Studiere auch in GM.. komme mit der Auf3 nicht klar.. zumindest beim einlesen mit EOF..
hier die main von Auf2
int main()
{
int i=0,j;
int zahlen[100];FILE *wertedatei;
if ((wertedatei = fopen("werte.dat","r")) == NULL)
{
printf ("Error");
return 1;
}
else
{
while (!feof(wertedatei))
{
fscanf(wertedatei, "%i",&zahlen[i]);
if (i>=100)
return 1;
i++;
}
}
fclose (wertedatei);
-
danke für den Tipp
so siehts jetzt aus:
#include <stdio.h> #include <stdlib.h> #include </home/ai988/header.c> int main(){ header("Datei einlesen"); FILE *try; int i=0; int in[100]; for(int k = 0; k < 100; k++){ in[k] = 0; } if((try=fopen("werte.dat","r")) == NULL){ printf("\nDatei nicht vorhanden.\n"); }else{ while(fscanf(try,"%d",&in[i]) != EOF){ i++; } fclose(try); } for(int j=0;j< 35;j++){ printf("%d",in[j]); } exit(0); }
Wenn ich das programm starte bekomme ich aber so was raus:
10-790-976013-6-6904-12053-48056-78471010-30-320300Wenn ich das Array über die Tastatur fülle sollte es doch so gehen oder?
Werd nochmal was weiter zum experimentieren, vll geschen ja noch Zeichen und Wunder ^^.mfg Nerosmeel
EDIT: hab SAONs Beitrag zu süät bemerkt.
Mit [Strg]+[d] kannst du ein EOF erzeugen, versuchs mal bin mir nich 100pro sicherNOCH EIN EDIT: Fehler gefunden...manchmal sieht man den Wald vor lauter Bäumen nicht. printf("%d \n",in[j]); muss es heißen *schäm*
-
Aer an der Aufgabe 2. in diesem PDF scheitere ich zurzeit.
Du weißt aber, daß dir Dämonen aus der Nase fliegen könnten, wenn
du Zeiger in Integers schreibst, oder?
-
jetzt ja^^ aber ich habs ja auch gelöst *freu*
dafür häng ich an nu an Aufgabe 3...:( scheiß make Kommando
-
hab mir erst alles in die arrayFunction.c geschrieben..
hing ziemlich lange an der einlesen aber nur scheints zu funktionieren
wo hängst du fest?
-
Bei der sache mit dem per make kompilieren k.a. wie das gehen soll,
mit dem Rest hab ich mich noch net beschäftigt, werds aber mal angehen.
Kannst mich ja bei ICQ adden vll kommen zu zweit auf die Lösung.
305799772so far Neros
EDIT: hab im mom auch Probleme mit dem Compiler, hast du noch die Unix doku als PDF?
-
ich mach das direkt übern advm1..
hab leider keine pdf..das makefile musst du anlegen
bsp. joe makefiledann
array: arrayFunktion.o arrayMain.o cc -o array arrayFunktion.o arrayMain.o arrayMain.o: arrayMain.c arrayFunktion.h cc -c arrayMain.c arrayFunktion.o: arrayFunktion.c arrayFunktion.h cc -c arrayFunktion.c
nun kannst du es mit make complimieren
und unter array statt a.out aufrufen..
-
wenn ich das von dir in makefile kopiere und dann make aufrufe kommt das
"makefile", line 2: make: 1254-055 Dependency line needs colon or double colon operator.
"makefile", line 5: make: 1254-055 Dependency line needs colon or double colon operator.
"makefile", line 8: make: 1254-055 Dependency line needs colon or double colon operator.aber ich kann sowieso nichts mehr aufem advm1 Kompilieren was eigene Headerdatein benutzt...
so far Neros
-
die 3 Dateien hast du aber schon angelegt oder?
-
jop ^^ Aber da ich ja garnix mehr Kompeliren kann, werd ich morgen mal zu denn Jungs vom ADV Labor gehen und fragen was das sein kann.
so far Neros