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!