In Konflikt stehende Typen

Gast #2414550
Lesenswert?
• ▲
▼
Also ich versteh echt nicht, was dem Compiler hier nicht passt:
1
char* decrypt(char *keyword){
2
  
3
  int i;
4
    
5
  for(i=0; i<28; i++){
6
     if((strcmp(keyword, words[i][1])) == 0){
7
       return words[i][0];
8
     }  
9
   }
10
  
11
   return NULL;
12
}

als Fehlermeldung bekomme ich:
In Konflikt stehende Typen für »encrypt« und das ganze in der ersten 
Zeile!
Hat hier irgendwer eine idee?
Gast #2414590
Lesenswert?
• ▲
▼
also:
1
char *words[3][2]={  {"a","alles"},
2
                     {"b","Test"},
3
                     {"c","und"},
4
                   }
5

6
/*geht eigentlich das Ganze Alphabet durch*/

in der main wird eine Methode aufgerufen:
1
void find(){
2

3
  char d;
4
  char buffer[10];
5
  int l = 0;
6
  
7
  memset(buffer, '\0', 10);
8
  
9
  while((d=getc(stdin)) != EOF){
10
    
11
    if(d == ' '){
12
      char *solve;
13
      solve = decrypt(buffer);
14
      
15
      if(solve != NULL){
16
        printf("%s", solve);
17
        memset(buffer, '\0', 10);
18
        l = 0;
19
      }
20
    }
21
    buffer[l]=d;
22
    l++;

hab den Code jetzt ein bisschen gekürzt, aber da sollte jetzt zumindest 
alles dabei sein.
Gast #2414607
Lesenswert?
• ▲
▼
1
int main(int argc, char *argv[]){
2

3
  void find();
4

5

6
  int opt;
7
  
8
  while ((opt = getopt(argc, argv, "f")) != -1){
9
    
10
    switch(opt){
11
    
12
      case 'f':
13
        find();
14
        break;
15
            
16
      default:
17
        printf("%s", "ungültige Parameter wurden angegeben");
18
        break;  
19
    }
20
    
21
  }

Ich hoffe, dass reicht...mehr hab ich nämlich nicht mehr :D
Gast #2414627
Lesenswert?
• ▲
▼
Das Problem ist, dass ich nicht einfach den gesamten Code nehmen kann 
und hier hinein kopieren kann. Dabei könnt ich Probleme mit meiner 
Abgabe bekommen.

Das ist genau die Hälfte von meinem Programm, ohne die libraries!
Gast #2414651
Lesenswert?
• ▲
▼
1
int main(int argc, char *argv[]){
2

3
  void find();
4

5

6
  int opt;
7
  
8
  while ((opt = getopt(argc, argv, "h")) != -1){
9
    
10
    switch(opt){
11
    
12
      case 'h':
13
        hide();
14
        break;
15
            
16
      default:
17
        printf("%s", "ungültige Parameter wurden angegeben");
18
        break;  
19
    }
20
 }
21
return 0
22
}
23

24
void hide(){
25

26
  char c;
27

28
  while((c=getc(stdin)) != EOF){
29

30
      if (c =='\n'){
31
        break;
32
      }
33
      
34
      printf("%s%s", encrypt(c), " ");
35
        
36
    }
37
}
38

39
char* encrypt(char letter){
40
  int a;
41
  
42
  for(a=0; a<28;a++){
43
    if(words[a][0][0]==letter){
44
      return words[a][1];
45
    }
46
  }
47
  return NULL;
48
}
Gast #2414672
Lesenswert?
• ▲
▼
Du hast die    char* encrypt(char letter)
erst nach der Verwendung in printf("%s%s", encrypt(c), " ")
definiert.

Entweder ein char* encrypt(char letter);
ganz oben in den SOurce einfügen, oder die Funktion ÜBER der Verwendung 
schreiben - also hide() und encrypt() vertauschen.

Ansonsten setzt der Compiler bei der Verwendung von der ihm unbekannten 
Funktion encrypt() einen default wert ein.
Gast #2414707
Lesenswert?
• ▲
▼
Das löst mein Problem immer noch nicht. Hab jetzt beide Varianten 
versucht, aber irgendwie will das nicht. Habe hide() mit encrypt() 
vertasucht, kein Resultat und auch wenn ich ganz oben
1
char* encrypt(char letter);

ändert das nichts :(
Gast #2414724
Lesenswert?
• ▲
▼
Wo "ganz oben" hast Du das gemacht ?

Bisher hast Du anscheinend :
1
int main(int argc, char *argv[]){
2

3
  void find();

sollte aber eher
1
  void find();
2
  void hide();
3
  char* encrypt(char letter);
4

5
int main(int argc, char *argv[]){
sein
Gast #2414757
Lesenswert?
• ▲
▼
Das verwundert mich.
Bei mit compiliert es ohne Fehler
1
#include "stdafx.h"
2
#include <stdio.h>
3

4
/* ************************************/
5
/* Nur weil ich hier kein getopt habe */
6
int getopt(int argc, char *argv[], const char[2])
7
{
8
   return 0;
9
}
10
/* Nur weil ich hier kein getopt habe */
11
/* ************************************/
12

13

14
void hide();
15
char* encrypt(char letter);
16

17
char *words[3][2]={  {"a","alles"},
18
                     {"b","Test"},
19
                     {"c","und"},
20
                   };
21

22

23

24
int main(int argc, char *argv[])
25
{
26

27
  
28
   int opt;
29
  
30
    while ((opt = getopt(argc, argv, "h")) != -1){
31
    
32
    switch(opt){
33
    
34
      case 'h':
35
        hide();
36
        break;
37
            
38
      default:
39
        printf("%s", "ungültige Parameter wurden angegeben");
40
        break;  
41
    }
42
    
43

44
 } 
45
return 0;
46
}
47

48
void hide(){
49

50
  char c;
51

52
  while((c=getc(stdin)) != EOF){
53

54
      if (c =='\n'){
55
        break;
56
      }
57
      
58
      printf("%s%s", encrypt(c), " ");
59
        
60
    }
61
}
62

63
char* encrypt(char letter){
64
  int a;
65
  
66
  for(a=0; a<28;a++){
67
    if(words[a][0][0]==letter){
68
      return words[a][1];
69
    }
70
  }
71
  return NULL;
72
}
Gast #2414863
Lesenswert?
• ▲
▼
Nur das ich das jetzt richtig verstehe:

Die librarie
1
#include <unistd.h>
 stellt eine function
1
void encrypt(char[64], int);
 zur Verfügung. Da ich mir jetzt selber eine Funktion mit dem Gleichen 
Namen geschrieben habe, hab ich natürlich einen Fehler bekommen!?
#2414893
Lesenswert?
• ▲
▼
stefan schrieb:
> Nur das ich das jetzt richtig verstehe:
>
> Die librarie
> #include <unistd.h>
> stellt eine function
> void encrypt(char[64], int);
> zur Verfügung.

Ein Header File ist ein Textfile wie jedes andere.
Mach es in deinem Editor auf und schau rein

Ja.
http://pubs.opengroup.org/onlinepubs/7908799/xsh/unistd.h.html

> Da ich mir jetzt selber eine
> Funktion mit dem Gleichen Namen geschrieben habe, hab ich natürlich
> einen Fehler bekommen!?

Und du hast auch gesehen, dass Fehler/Probleme oft an Stellen sitzen, an 
die du gar nicht gedacht hast. Darum bestehen hier auch 80% des Forums 
darauf, dass du VOLLSTÄNDIGEN Code postest. Dann hätten man sich das 
Hin-und Her über 3 Stunden sparen können. Das kommt dir zu gute und uns 
auch.


Und PS:
Ein Header File alleine ist noch keine Library. Ein Header File 
beschreibt die Dinge, die zum Beispiel in einer Library zu finden sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren