- #include<stdlib.h>
- #include<stdio.h>
- char telefonbuch[100][100];
- char suchbegriff[100];
- // Die Laufvariablen zeile und spalte werden nur im scope verwendet, in dem sie gerade definiert sind.
- void eingabe()
- {
- int i;
- printf("\nBitte den Suchbegriff eingeben: ");
- fgets(suchbegriff, sizeof(suchbegriff), stdin);
- for(i = 0; suchbegriff[i] != 10; i++);
- suchbegriff[i] = 0;
- }
- int suchen()
- {
- int spalte = 0;
- int rueckgabe = 0;
- int zeile = 0;
- //einfach nur die Zeilen durchlaufen.
- for(zeile = 0, spalte = 0; telefonbuch[zeile][spalte];zeile++)
- {
- //die aeussere Schleife dient nur dem Hochzaehlen der zeilen. Abgefragt werden in der inneren Schleife die konkreten Werte anhand der Spalten.
- //Abgebrochen wird die Schleife, wenn die innere Schleife so oft true wiederholt wird (also die spalten in einer Zeile mit dem Suchbegriff verglichen), bis
- //das Programm auf eine Ziffer stoesst. Dann haben wir einen Treffer gelandet, und es soll die aktuelle Zeile zurueckgegeben werden. Das klappt irgendwie
- //noch nicht.
- for(spalte = 0; telefonbuch[zeile][spalte] == suchbegriff[spalte]; spalte++)
- {
- //Debug-Ausgabe
- printf("Der aktuelle Wert in suchbegriff: %c, und der aktuelle Wert in telefonbuch: %c\n",suchbegriff[spalte],telefonbuch[zeile][spalte]);
- if(telefonbuch[zeile][spalte] >= '0' && telefonbuch[zeile][spalte] <= '9') //wenn die bedingung zutrifft, dann ist es eine nach ascii codierte ziffer (char-ziffer)
- {
- rueckgabe = zeile;
- }
- }
- }
- printf("%d",rueckgabe);
- return rueckgabe;
- }
- void initialisieren()
- {
- int spalte = 0;
- int zeile = 0;
- while(zeile < 100)
- {
- for(spalte= 0; spalte < 100; spalte++)
- {
- telefonbuch[zeile][spalte] = ' ';
- }
- zeile++;
- if(spalte == 99 && zeile == 99)
- telefonbuch[zeile][spalte] = 0;
- }
- }
- void einlesen()
- {
- FILE *tele;
- char zeichen;
- int zeile;
- int spalte;
- tele = fopen( "telefonbuch.txt", "r");
- if (!tele)
- {
- printf("Fehler beim Oeffnen der Datei");
- exit (1);
- }
- spalte = 0;
- zeile = 0;
- while(1)
- {
- zeichen = fgetc(tele);
- if(feof(tele))
- {
- telefonbuch[zeile][spalte] = 0;
- printf("\nDatei ist zuende. zeile = %d, spalte = %d und der wert ist: %d\n",zeile,spalte,telefonbuch[zeile][spalte]);
- break;
- }
- // printf("Spalte: %d, Zeile: %d\n",spalte,zeile);
- telefonbuch[zeile][spalte] = zeichen;
- spalte++;
- if(zeichen == '\n')
- {
- spalte = 0;
- zeile++;
- // printf("Leistenbruch\n");
- }
- }
- fclose(tele);
- return;
- }
- void ausgabe()
- {
- int spalte;
- int zeile;
- for (zeile = 0, spalte = 0; telefonbuch[zeile][spalte] != 0; zeile++)
- {
- for (spalte = 0; telefonbuch[zeile][spalte]; spalte++)
- {
- if(telefonbuch[zeile][spalte] == '\n')
- {
- break;
- }
- printf("%c",telefonbuch[zeile][spalte]);
- }
- if(telefonbuch[zeile][spalte] == 0)
- break;
- printf("\n" );
- }
- return;
- }
- int main()
- {
- int zeile;
- initialisieren();
- einlesen();
- ausgabe();
- eingabe();
- printf("%d",suchen());
- return 0;
- }