Datei in array einlesen ANSI-C < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | Eine Datei enthält 9*9 Zahlen die zeilenweise in ein Array eingelesen und auf dem Bildschirm ausgegeben werden sollen. |
Hallo,
ich habe u.a. folgendes bereits ohne Erfolg probiert:
int einlesen(int spielfeld[9][9])
{
char dname[20];
FILE *datin;
int z, s;
do
{
[mm] printf("\nBitte [/mm] den Dateinamen des Spielfelds [mm] eingeben:\n");
[/mm]
scanf("%s", &dname);
getchar();
datin=fopen(dname,"r");
fclose(datin);
if(datin == NULL)
[mm] printf("\nDatei [/mm] existiert [mm] nicht!\n");
[/mm]
} while (datin == NULL);
//Initialisierung des Spielfelds
for (z=0; z<9; z++)
{
for (s=0; s<9; s++)
{
datin = fopen(dname,"r");
fscanf(datin,"%i", &spielfeld[z][s]);
fclose(datin);
printf("%i",spielfeld[z][s]);
}
}
}
Leider liest das programm nur den ersten Wert der Datei ein also spielfeld[0][0] so das auf dem Bildschirm nur 81mal die erste Zahl ausgeben wird.
Bevor ich verzweifel dachte ich frage ich hier mal nach Hilfe
lg
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 01:55 Fr 08.01.2010 | Autor: | rainerS |
Hallo!
> Eine Datei enthält 9*9 Zahlen die zeilenweise in ein Array
> eingelesen und auf dem Bildschirm ausgegeben werden
> sollen.
> Hallo,
> ich habe u.a. folgendes bereits ohne Erfolg probiert:
>
1: | int einlesen(int spielfeld[9][9])
| 2: | {
| 3: | char dname[20];
| 4: | FILE *datin;
| 5: | int z, s;
| 6: |
| 7: | do
| 8: | {
| 9: | printf("\nBitte den Dateinamen des Spielfelds eingeben:\n");
| 10: | scanf("%s", &dname);
| 11: | getchar();
| 12: | datin=fopen(dname,"r");
| 13: | fclose(datin);
| 14: | if(datin == NULL)
| 15: | printf("\nDatei existiert nicht!\n");
| 16: |
| 17: |
| 18: | } while (datin == NULL);
| 19: |
| 20: | //Initialisierung des Spielfelds
| 21: |
| 22: | for (z=0; z<9; z++)
| 23: | {
| 24: | for (s=0; s<9; s++)
| 25: | {
| 26: | datin = fopen(dname,"r");
| 27: | fscanf(datin,"%i", &spielfeld[z][s]);
| 28: | fclose(datin);
| 29: | printf("%i",spielfeld[z][s]);
| 30: | }
| 31: | }
| 32: | } |
> Leider liest das programm nur den ersten Wert der Datei ein
> also spielfeld[0][0] so das auf dem Bildschirm nur 81mal
> die erste Zahl ausgeben wird.
Du öffnest die Datei für jede einzelne Zahl neu; dabei fängt das Einlesen immer wieder am Anfang der Datei an. Öffne die Datei genau einmal.
Viele Grüße
Rainer
|
|
|
|