Problem mit stcmp mit zwei Vektoren



  • Es geht um eine einfache "Verschlüsselung".. Bin noch ein absoluter C-Anfänger.
    ich versuche in der encrypt Methode zwei Vektoren jeweils an der Stelle "i",und "j" miteinander zu vergleichen, bekomm aber folgenden Fehler:

    a11.c:11:4: Warnung: Übergabe des Arguments 1 von »strcmp« erzeugt Zeiger von Ganzzahl ohne Typkonvertierung [standardmäßig aktiviert]

    habe da jetzt schon eine ganze Weile mit * rumbrobiert aber es hat nie geklappt. Meine Frage ist nun ob ich das prinzipiell falsch aufgebaut habe oder ob es doch eine Lösung gibt.

    #include <stdio.h>
    #include <string.h>
    
    void encrypt (char v1[], char v2[], char string[]){
    	int i,j;
    
    	printf("%s \n", string);
    
    	for (i = 0; i< (int)strlen(string)-1; i++){
    		for (j = 0; j< (int)strlen(v2)-1; j++){
    			if (strcmp(string[i], v1[j]) == 0){
    
    			}
    		}
    	}
    }
    
    void decrypt (char *v1, char *v2, char string[]) {
    }
    
    int main( int argc, char* argv[] ){
    
    char v1[] = {' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    char v2[] = {' ','i','r','j','m','n','z','l','t','a','c','o','g','d','e','k','s','v','b','p','h','x','q','y','u','w','f'};
    char string[100];
    
    while (fgets(string,100, stdin) != NULL){
    
    	if (strcmp(argv[1], "encrypt") == 0){
    		encrypt(v1, v2, string);
    	}else{
    		decrypt(v1,v2, string);
    	}
    }
    return 0;
    }
    


  • strcmp erwartet als Argumente zwei Zeiger auf Nullterminierte Strings.

    Du übergibst aber nur zwei Zeichen.
    Zeichen kann man aber direkt vergleichen:

    if (string[i]== v1[j]){
    


  • Falls du mit 'Vektor' eine Zeichenkette meinst, ist es korrekt, was der Compiler meldet.
    Wenn du 2 Elemente einer Zeichenkette vergleichen willst, vergleichst du 2 Zeichen (Typ char). strcmp vergleicht aber Zeichenketten miteinander.

    if( string[i] == v1[j] )
    

    sollte also bei dir helfen, und lass die dümmlichen (int)-Casts weg.



  • ohje verdammt, sorry 🙄. es ist wohl schon zu spät.. -.-
    danke euch!


Anmelden zum Antworten