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
|
|
|
|