tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
18
ZUGRIFFE
713
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Hallo Tutorials.de

    Ich habe ein Programm geschrieben, das Lateinwörter auslesen und konjugieren soll. Bis jetzt funktioniert aber erst das erste Wort der Datenbank-Datei, beim Rest stürzt das Programm ab:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    while(wortok==0)
      {                               
      
      do{
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!='+');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      fprintf(fa,"%s+",Abfrage);
      fseek(fa,0,SEEK_SET);
      fgets(Abfrage,256,fa);
      
      if(strcmp(Ruckmeldung, Abfrage)==0)
      {
      printf("\nWort in Datenbank gefunden:\n");
      break;
     
      }
      else
      {
      do
      {
      inhalt=getc(f);
      }while(inhalt!='|');
      continue;
      }  
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      } 
    //nächsten Schritt ausführen

    Ich benutze den Dev-C++ Compiler (C) auf einem win7 64bit System (Ja ich weiss dass der Dev-C++ nicht mehr weiterentwickelt wird, aber Visual C++ spricht mich mit den vielen Fehlermeldungen nicht an)

    Der Datenbanksyntax ist:
    |rufen+vocare,voco,vocavi,vocatum:1*voc-
    |warnen+...

    Weiss jemand Rat?

    Danke
    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Könnest du vllt. die gesamte Datei posten?
     

  3. #3
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Ja u.a. auch mit den Variablendeklarationen.

    Übrigens ist der Dev-C++ nur eine IDE, sprich ein Editor mit vielen Funktionen. Der eigentliche Compiler ist standardweise der MinGW bzw. GCC.
    Schau dir doch mal Code::Blocks an, den kannst du auch mit dem MinGW benutzen.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  4. #4
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Ja, ich kann sie posten, aber ich dachte, dass sie zu gross wäre:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    
    #include "stdlib.h"
    #include "windows.h"
    #include "stdio.h"
    #include "conio.h"
    #include "time.h"
     
     
     
     
    int main(int argc, char *argv[])
    {
        int wortok;
        FILE* f;
        FILE* fa;
        int inhalt;
        char Abfrage[256];  
        char Ruckmeldung[256];
        int Konj;
      f = fopen("Buch.lltv", "r");
      fa=fopen("Speicher","w+");
      if(f==NULL)
      {
      printf("Es wurde kein Woerterbuch gefunden. Bitte lade oder erstelle eines.\n Das Programm kann nicht fortfahren.\n\n");
      _sleep(5000);
      return 0;
      }
      
      inhalt=0;
      wortok=0;
      
      printf("Bitte gib das gewuenschte Wort ein.\n");
      scanf("%s", &Abfrage);
      
      
      
      fseek(f,0,SEEK_SET);
      
      
      inhalt=fgetc(f);
      
      while(wortok==0)
      {                               
      
      do{
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!='+');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      fprintf(fa,"%s+",Abfrage);
      fseek(fa,0,SEEK_SET);
      fgets(Abfrage,256,fa);
      
      if(strcmp(Ruckmeldung, Abfrage)==0)
      {
      printf("\nWort in Datenbank gefunden:\n");
      break;
      }
      else
      {
      do
      {
      inhalt=getc(f);
      }while(inhalt!='|');
      continue;
      }  
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      } 
      
      
      do
      {
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!=':');
      
      fseek(fa,0,SEEK_SET);
      
      fgets(Ruckmeldung,256,fa);
      printf("%s",Ruckmeldung);
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      do
      {
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!='*');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
     
      if(strcmp(Ruckmeldung,"1*")==0)
      {
      printf(" Verb der A-Konj.\n\n");
      Konj=1;
      }
      if(strcmp(Ruckmeldung,"2*")==0)
      {
      printf(" Verb der E-Konj.\n\n");
      Konj=2;
      }
      if(strcmp(Ruckmeldung,"3*")==0)
      {
      printf(" Verb der I-Konj.\n\n");
      Konj=3;
      }
      if(strcmp(Ruckmeldung,"4*")==0)
      {
      printf(" Verb der Kons.-Konj.\n\n");
      Konj=4;
      }
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      FILE* Stamm;
      Stamm=fopen("Stamm","a+");
      
      do
      {
      inhalt=getc(f);
      fprintf(Stamm,"%c",inhalt);
      }while(inhalt!='-');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
     
     
      //fprintf(Stamm,"%s",Ruckmeldung);
      
      
      //Konjugationsdienst
      FILE* fb;
      fb=fopen("Speicher2","w+");
      
      printf("\n\nDer Konjugationsdienst ist nun bereit.\nSyntax-bsp.:\n2S fuer 2. Pers. Singular Aktiv\n\n Dies ist die Omega-Fassung des Programmes. Es stehen nur\n sehr wenige Formen zur Verfuegung.\n\n");
      printf("Form?");
      scanf("%s",&Abfrage);
      
      //--------------------------------------------------------------------------------------------
      
      if(Konj==1)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%so",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sas",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sat",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%samus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%satis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sant",Ruckmeldung);
      }
      }
     
     if(Konj==2)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%seo",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%ses",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%set",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%semus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%setis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sent",Ruckmeldung);
      }
      }
     
     
     if(Konj==3)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sio",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sit",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%simus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sitis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%siunt",Ruckmeldung);
      }
      }
     
     
     
     
     if(Konj==4)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%so",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sit",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%simus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sitis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sunt",Ruckmeldung);
      }
      }
      //--------------------------------------------------------------------------------------------
      
      
      
      printf("\n\nDanke fuer die Benutzung des Programmes.\n\n");
      
     
     
      fclose(f);
      fclose(fa);
      fclose(fb);
      fclose(Stamm);
      
      remove("Speicher");
      remove("Speicher2");
      remove("Stamm");
      _sleep(100);
      
      system("PAUSE");
      return 0;
        
    }

    Übrigens: Code:Blocks habe ich auch installiert, aber wie gesagt: Ich liebe Dev-C++ trotz manchen Problemen wegen der Einfachheit.

    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  5. #5
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Falls es irgendwie hilft, hier noch die ursprüngliche Fassung: (auch nur eine Datei wird ausgelesen)

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    
    #include "stdlib.h"
    #include "windows.h"
    #include "stdio.h"
    #include "conio.h"
    #include "time.h"
     
     
     
     
    int main(int argc, char *argv[])
    {
     
        FILE* f;
        FILE* fa;
        int inhalt;
        char Abfrage[256];  
        char Ruckmeldung[256];
        int Konj;
      f = fopen("Buch.lltv", "r");
      fa=fopen("Speicher","w+");
      if(f==NULL)
      {
      printf("Es wurde kein Woerterbuch gefunden. Bitte lade oder erstelle eines.\n Das Programm kann nicht fortfahren.\n\n");
      _sleep(5000);
      return 0;
      }
      
      printf("Bitte gib das gewuenschte Wort ein.\n");
      scanf("%s", &Abfrage);
      
      fseek(f,0,SEEK_SET);
      inhalt=0;
      
      do
      {
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!='+');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      fprintf(fa,"|%s+",Abfrage);
      fseek(fa,0,SEEK_SET);
      fgets(Abfrage,256,fa);
      
      if(strcmp(Ruckmeldung, Abfrage)==0)
      {
      printf("\nWort in Datenbank gefunden:\n");
      }
      else
      {
      printf("Von diesem Wort weiss ich nichts");
      _sleep(4000);
      return 0;
      }  
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      do
      {
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!=':');
      
      fseek(fa,0,SEEK_SET);
      
      fgets(Ruckmeldung,256,fa);
      printf("%s",Ruckmeldung);
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      do
      {
      inhalt=getc(f);
      fprintf(fa,"%c",inhalt);
      }while(inhalt!='*');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
     
      if(strcmp(Ruckmeldung,"1*")==0)
      {
      printf(" Verb der A-Konj.\n\n");
      Konj=1;
      }
      if(strcmp(Ruckmeldung,"2*")==0)
      {
      printf(" Verb der E-Konj.\n\n");
      Konj=2;
      }
      if(strcmp(Ruckmeldung,"3*")==0)
      {
      printf(" Verb der I-Konj.\n\n");
      Konj=3;
      }
      if(strcmp(Ruckmeldung,"4*")==0)
      {
      printf(" Verb der Kons.-Konj.\n\n");
      Konj=4;
      }
      
      fclose(fa);
      remove("Speicher");
      fa=fopen("Speicher","w+");
      
      FILE* Stamm;
      Stamm=fopen("Stamm","a+");
      
      do
      {
      inhalt=getc(f);
      fprintf(Stamm,"%c",inhalt);
      }while(inhalt!='-');
      
      fseek(fa,0,SEEK_SET);
      fgets(Ruckmeldung,256,fa);
     
     
      //fprintf(Stamm,"%s",Ruckmeldung);
      
      
      //Konjugationsdienst
      FILE* fb;
      fb=fopen("Speicher2","w+");
      
      printf("\n\nDer Konjugationsdienst ist nun bereit.\nSyntax-bsp.:\n2S fuer 2. Pers. Singular Aktiv\n\n Dies ist die Omega-Fassung des Programmes. Es stehen nur\n sehr wenige Formen zur Verfuegung.\n\n");
      printf("Form?");
      scanf("%s",&Abfrage);
      
      //--------------------------------------------------------------------------------------------
      
      if(Konj==1)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%so",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sas",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sat",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%samus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%satis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sant",Ruckmeldung);
      }
      }
     
     if(Konj==2)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%seo",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%ses",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%set",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%semus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%setis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sent",Ruckmeldung);
      }
      }
     
     
     if(Konj==3)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sio",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sit",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%simus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sitis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%siunt",Ruckmeldung);
      }
      }
     
     
     
     
     if(Konj==4)
      {
      if(strcmp(Abfrage,"1S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%so",Ruckmeldung);
      }
      if(strcmp(Abfrage,"2S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3S")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sit",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"1P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%simus",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"2P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sitis",Ruckmeldung);
      }
      
      if(strcmp(Abfrage,"3P")==0)
      {
      fseek(Stamm,0,SEEK_SET);
      fgets(Ruckmeldung,256,Stamm);
      printf("\n\n%sunt",Ruckmeldung);
      }
      }
      //--------------------------------------------------------------------------------------------
      
      
      
      printf("\n\nDanke fuer die Benutzung des Programmes.\n\n");
      
     
     
      fclose(f);
      fclose(fa);
      fclose(fb);
      fclose(Stamm);
      
      remove("Speicher");
      remove("Speicher2");
      remove("Stamm");
     
      
      system("PAUSE");
      return 0;
        
    }

    Danke für die Hilfe!

    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Also bei mir stürzt nichts ab, dafür hängt sich das Programm aber immer wieder mal auf. Bin leider noch nicht dazugekommen, es mir genauer anzuschauen, kommt aber noch.
     

  7. #7
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Vielen Dank für's Anschauen! Ich bitte dennoch um Entschuldigung, ich habe nicht alles erklärt: Die beiden Wörter, die funktieren (sollten) sind "rufen" und "warnen" (eingeben bei Wortart)
    Wie man sieht, funktioniert die 2 version, die ich geposted habe, besser, kennt jedoch nur ein Wort (das da wäre rufen). Die Erste verarbeitet nicht alles richtig...

    Danke

    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  8. #8
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Zum besseren Verständnis hier noch der Dateisyntax:
    |rufen+vocare,voco,vocavi,vocatum:1*voc-

    Gruss
    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Warum liest du denn Zeichen aus, schreibst diese in eine extra Datei und liest dann aus der Datei wieder aus? Warum einfach wenn's auch kompilizierter geht, oder wie?

    Wenn du etwas in einen String schreiben willst, dann mußt du das nicht erst in eine Datei schreiben und dann wieder auslesen (ist dir das nicht etwas unsinnig vorgekommen?), verwende die Stringfunktionen strcpy, strcat bzw. sprintf.

    Um in einem String zu suchen, kannst du die strstr bzw. strchr Funktionen verwenden.

    Du solltest generell die Rückgabewerte der Funktionen auf Fehler prüfen (getc gibt EOF bei einem Fehler zurück usw.).

    Damit man dein Programm testen kann, solltest du mal eine kleine Vokabeldatei zur Verfügung stellen.

    Für die Übersichtlichkeit wäre es besser du würdest deinen Code in irgendeiner Form vernünftig einrücken.

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    char zeile[256];
     
    while (NULL != fgets(zeile, 256, f)) {
      if (zeile[0] != '|') {
        // unerwartetes Zeichen ...
      } else {
        const char *wort = zeile + 1;
        char *konj, *typ, *stamm;
     
        konj = strchr(wort, '+');
        if (konj == NULL) continue;
     
        typ = strchr(konj, ':');
        if (typ == NULL) continue;
     
        stamm = strchr(typ, '*');
        if (stamm == NULL) continue;
     
        *konj++ = '\0';
        *typ++ = '\0';
        *stamm++ = '\0';
     
        printf("Wort: %s\n"
               "Konjugationen: %s\n"
               "Typ: %s\n"
               "Stamm: %s\n",
               wort, konj, typ, stamm);
      }
    }
    Man könnte auch sscanf oder strtok verwenden um eine ausgelesene Zeile zu verarbeiten. Schau in eine C Referenz was es für Funktionen gibt und welche Argumente bzw. Rückgabewerte erwartet werden.

    Gruß
    cwriter bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Hier die angefangene Datei (als buch.lltv speichern):

    Code :
    1
    2
    3
    
    |rufen+vocare,voco,vocavi,vocatum:1*voc-
    |kommen+venire,venio,veni,venitum:3*ven-
    |warnen+monere,moneo,monui,monitum:2*mon-

    Ja, es ist mir ziemlich unsinnig vorgekommen, aber ich wusste nichts von der blossen Existenz dieser Befehle geschweige denn was die Parameter sind. Wieder was gelernt.

    fgetc habe ich ja ausgelesen, doch das Problem war, dass nur 1 Wort gefunden wurde.

    Was verstehst du unter "vernünftiger Form"? die c-Tags oder was?

    Danke für die geleistete Hilfe und das Aufklären über die Funktionen!

    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  11. #11
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Mit "Form" meint er, dass du z.B. den Inhalt in einem IF einrücken sollst, also je nach Hierarchie-Ebene, z.B:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    if (0=1)
    {
      cout << "0=1****";
    }
    else if (9==9)
    {
      if (4==4)
      {
        cout << "alles eingerueckt!";
      }
    }
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  12. #12
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Ja, ich meinte mit Form die Einrückung. Es gibt einige populäre Stile:

    http://en.wikipedia.org/wiki/Indent_style

    Du kannst dir auch selbst einen ausdenken, aber du solltest dich dann auch konsequent dran halten.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Ich habe mir den Syntax der Funktionen nun angeschaut, habe aber immer noch Fragen dazu:

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    char zeile[256];
     
    while (NULL != fgets(zeile, 256, f)) {
      if (zeile[0] != '|') {
        // unerwartetes Zeichen ...
      } else {
        const char *wort = zeile + 1; 
        //wird gesagt, dass zeile irgendein Zeichen länger ist als Wort?
        char *konj, *typ, *stamm;
        //Initialisierung von char *konj, char *typ, char *stamm?
        konj = strchr(wort, '+');
        //Auslesen bis +?
        if (konj == NULL) continue;
        //Falls konj==+?
     
        typ = strchr(konj, ':');
        if (typ == NULL) continue;
     
        stamm = strchr(typ, '*');
        if (stamm == NULL) continue;
     
        *konj++ = '\0';
        *typ++ = '\0';
        *stamm++ = '\0';
        //Löschen der chars? 
        printf("Wort: %s\n"
               "Konjugationen: %s\n"
               "Typ: %s\n"
               "Stamm: %s\n",
               wort, konj, typ, stamm);
      }
    }

    Und wo kann bzw. soll man überprüfen, ob die Frage des Users mit der Ausgabe übereinstimmt? Bis jetzt gibt das Programm einfach alle Wörter der Datei aus.

    cwriter
    Geändert von cwriter (29.01.11 um 11:01 Uhr)
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  14. #14
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Ich habe nun vieles mit Deepthroats Code ausprobiert und habe damit folgendes geschrieben:

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    
    #include "stdlib.h"
    #include "windows.h"
    #include "stdio.h"
    #include "conio.h"
    #include "time.h"
     
     
     
     
    int main(int argc, char *argv[])
    {
     
        FILE* f;
        FILE* fa;
        int inhalt;
        char Abfrage[256];  
        char Ruckmeldung[256];
        int Konj;
      
      f = fopen("Buch.lltv", "r");
      
      if(f==NULL)
      {
      printf("Es wurde kein Woerterbuch gefunden. Bitte lade oder erstelle eines.\n Das Programm kann nicht fortfahren.\n\n");
      _sleep(5000);
      return 0;
      }
      
      printf("Bitte gib das gewuenschte Wort ein.\n");
      scanf("%s", &Abfrage);
      
      fseek(f,0,SEEK_SET);
      inhalt=0;
      
      
      
     
    char zeile[256];
     
    while (NULL != fgets(zeile, 256, f)) 
    {  
      if (zeile[0] != '|') 
      {
        printf("Dieses Woerterbuch ist Fehlerhaft.\n");  
      } 
      else 
      {
        const char *wort = zeile + 1;
        char *konj, *typ, *stamm;
        
         
        konj = strchr(wort, '+');
        if (konj == NULL) continue;
     
        typ = strchr(konj, ':');
        if (typ == NULL) continue;
     
        stamm = strchr(typ, '*');
        if (stamm == NULL) continue;
     
        *konj++ = '\0';
        *typ++ = '\0';
        *stamm++ = '\0';
     
        if(strstr(zeile,Abfrage)!=NULL)
        {
           
        }
        else
        {
           continue;
        }
        
        printf("\n\n"
               "Wort: %s\n"
               "Konjugationen: %s\n"
               "Typ: %s\n"
               "Stamm: %s\n"
               "\n\n",
               wort, konj, typ, stamm);
        
        
      }
    }
     
      fclose(f);
      
      system("PAUSE");
      return 0;
        
    }

    Hat irgendwer Einwände dagegen oder Vorschläge? Ansonsten wäre dieses Theme geschlossen.

    Danke an alle Helfer (besonders an Deepthroat)

    cwriter
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  15. #15
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von cwriter Beitrag anzeigen
    Und wo kann bzw. soll man überprüfen, ob die Frage des Users mit der Ausgabe übereinstimmt? Bis jetzt gibt das Programm einfach alle Wörter der Datei aus.
    Genau da wo die Ausgabe gemacht wird...
    Zitat Zitat von cwriter Beitrag anzeigen
    Ich habe nun vieles mit Deepthroats Code ausprobiert und habe damit folgendes geschrieben:

    Code c:
    1
    2
    3
    4
    
        if(strstr(zeile,Abfrage)!=NULL)
        {
           
        }
    Das aktuell aus der Datei ausgelesene Wort befindet sich in der Variablen "wort". Warum nimmst du denn nicht einfach diese Variable zum Vergleichen?

    Ich würde auch nicht unbedingt "Abfrage" in "zeile" mit strstr suchen, da du sonst auch Teilworte finden würdest. (z.B. halten => vorenthalten ?)
    Code c:
    1
    2
    3
    
    if (strcmp(wort, Abfrage) == 0) {
      ...
    }

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Array in while oder for schleife auslesen
    Von BocaSpanky im Forum PHP
    Antworten: 5
    Letzter Beitrag: 06.03.10, 01:46
  2. formular mit for schleife auslesen
    Von missingdot im Forum PHP
    Antworten: 2
    Letzter Beitrag: 16.05.07, 15:35
  3. Mit for schleife Array auslesen
    Von lalaland im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 04.08.06, 15:38
  4. Input text in Schleife auslesen
    Von xeal im Forum PHP
    Antworten: 2
    Letzter Beitrag: 25.06.05, 12:53
  5. Antworten: 10
    Letzter Beitrag: 24.02.05, 14:59

Stichworte