Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 11th, 2012  |  syntax: None  |  size: 3.30 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. char telefonbuch[100][100];
  4. char suchbegriff[100];
  5. // Die Laufvariablen zeile und spalte werden nur im scope verwendet, in dem sie gerade definiert sind.
  6. void eingabe()
  7. {
  8.   int i;
  9.   printf("\nBitte den Suchbegriff eingeben: ");
  10.   fgets(suchbegriff, sizeof(suchbegriff), stdin);
  11.   for(i = 0; suchbegriff[i] != 10; i++);
  12.   suchbegriff[i] = 0;
  13. }
  14.  
  15. int suchen()
  16. {
  17.     int spalte = 0;
  18.     int rueckgabe = 0;
  19.     int zeile = 0;
  20.     //einfach nur die Zeilen durchlaufen.
  21.     for(zeile = 0, spalte = 0; telefonbuch[zeile][spalte];zeile++)
  22.     {
  23.       //die aeussere Schleife dient nur dem Hochzaehlen der zeilen. Abgefragt werden in der inneren Schleife die konkreten Werte anhand der Spalten.
  24.       //Abgebrochen wird die Schleife, wenn die innere Schleife so oft true wiederholt wird (also die spalten in einer Zeile mit dem Suchbegriff verglichen), bis
  25.       //das Programm auf eine Ziffer stoesst. Dann haben wir einen Treffer gelandet, und es soll die aktuelle Zeile zurueckgegeben werden. Das klappt irgendwie
  26.       //noch nicht.
  27.       for(spalte = 0; telefonbuch[zeile][spalte] == suchbegriff[spalte]; spalte++)
  28.       {
  29.         //Debug-Ausgabe
  30.         printf("Der aktuelle Wert in suchbegriff: %c, und der aktuelle Wert in telefonbuch: %c\n",suchbegriff[spalte],telefonbuch[zeile][spalte]);
  31.         if(telefonbuch[zeile][spalte] >= '0' && telefonbuch[zeile][spalte] <= '9') //wenn die bedingung zutrifft, dann ist es eine nach ascii codierte ziffer (char-ziffer)
  32.         {
  33.           rueckgabe = zeile;
  34.         }
  35.       }
  36.     }
  37.     printf("%d",rueckgabe);
  38.     return rueckgabe;
  39. }
  40.  
  41.  
  42. void initialisieren()
  43. {
  44.     int spalte = 0;
  45.     int zeile = 0;
  46.     while(zeile < 100)
  47.     {
  48.       for(spalte= 0; spalte < 100; spalte++)
  49.       {
  50.         telefonbuch[zeile][spalte] = ' ';
  51.       }
  52.       zeile++;
  53.       if(spalte == 99 && zeile == 99)
  54.         telefonbuch[zeile][spalte] = 0;
  55.     }
  56. }
  57. void einlesen()
  58. {
  59.     FILE *tele;
  60.     char zeichen;
  61.     int zeile;
  62.     int spalte;
  63.     tele = fopen( "telefonbuch.txt", "r");
  64.     if (!tele)
  65.     {
  66.       printf("Fehler beim Oeffnen der Datei");
  67.       exit (1);
  68.     }
  69.     spalte = 0;
  70.     zeile = 0;
  71.     while(1)
  72.     {
  73.       zeichen = fgetc(tele);
  74.       if(feof(tele))
  75.       {
  76.         telefonbuch[zeile][spalte] = 0;
  77.         printf("\nDatei ist zuende. zeile = %d, spalte = %d und der wert ist: %d\n",zeile,spalte,telefonbuch[zeile][spalte]);
  78.         break;
  79.       }
  80.     // printf("Spalte: %d, Zeile: %d\n",spalte,zeile);
  81.       telefonbuch[zeile][spalte] = zeichen;
  82.       spalte++;
  83.       if(zeichen == '\n')
  84.       {
  85.         spalte = 0;
  86.         zeile++;
  87.        // printf("Leistenbruch\n");
  88.       }
  89.     }
  90.     fclose(tele);
  91.     return;
  92. }
  93. void ausgabe()
  94. {
  95.     int spalte;
  96.     int zeile;
  97.     for (zeile = 0, spalte = 0; telefonbuch[zeile][spalte] != 0; zeile++)
  98.     {
  99.       for (spalte = 0; telefonbuch[zeile][spalte]; spalte++)
  100.       {
  101.         if(telefonbuch[zeile][spalte] == '\n')
  102.         {
  103.           break;
  104.         }
  105.         printf("%c",telefonbuch[zeile][spalte]);
  106.       }
  107.       if(telefonbuch[zeile][spalte] == 0)
  108.         break;
  109.       printf("\n" );
  110.     }
  111.     return;
  112. }
  113. int main()
  114. {
  115.   int zeile;
  116.   initialisieren();
  117.   einlesen();
  118.   ausgabe();
  119.   eingabe();
  120.   printf("%d",suchen());
  121.   return 0;
  122. }