strcat ?
-
Hallo zusammen,
komme irgendwie komme ich nicht klar mit c, verzweifle bald!, ist für die Schule, solle ein kleines, sehr sehr einfaches krypto script werden:
char str1[] ="abc";
char str2[] ="qwe";...
char *erg="";
if (str1[1] == str2[2]){
strcat(erg,str2[2]);
}....
bzw. wie müßte ich es richtig anstellen, das ich das gefundene paar an ergebnis
anhänge? ist strcat hierfür die richtige funktion?
danke für eure hilfe
-
wenn du strings und nicht nur einzelne zeichen
vergleichen willst musst du strcmp benutzen.
fuer 'erg' muss genuegend speicher reserviert sein:char str1[] ="abc"; char str2[] ="qwe"; ... char erg[7]; /* laenge von str1 und str2 + 1 fuer '\0' */ if ( strcmp( str1, str2 ) == 0) { strcat( erg, str1 ); /* erg ist leer; kopiert nur str1 hinein */ strcat( erg, str2 ); /* haengt ans ende von erg str2 an */ erg[6] = '\0'; }
-
nein leider nicht, ich muß einzelne Zeichen der strings miteinander verglichen
und einzelne Zeichen aus dem Stringf an einen neuen string anhängen, das Vergleichen ist kein problem, nur das anhängen geht nicht, mit strcat(erg,str2[2]); meckert er ständig wegen unterschiedlichen typen...
-
Original erstellt von <wodka>:
nein leider nicht, ich muß einzelne Zeichen der strings miteinander verglichen
und einzelne Zeichen aus dem Stringf an einen neuen string anhängen, das Vergleichen ist kein problem, nur das anhängen geht nicht, mit strcat(erg,str2[2]); meckert er ständig wegen unterschiedlichen typen...dann machs doch so:
int len=strlen(erg);
erg[len]=str2[2];
erg[len++]=0;
-
hm, irgendwie hilft mir das alles nicht weiter, vielleicht stell ich mich auch einfach nur zu doof an,
hier ist mal meine funktion, die eine Eingabe verschlüssesln soll;
char str1[] ="abcdefghijklmnopqrstuvwxyz"; char str2[] ="qwertzuiopasdfghjklyxcvbnm"; char *krypto(int argc, char *argv[], char str1[], char str2[]){ int i, j, k; char *erg = ""; for (i = 2; i <= argc-1; i++){ //für jedes eingegebene wort for (j = 0; j <= strlen(argv[i]); j++){ //einzel buchstaben for(k =0; k <= 25; k++){ //vergleich, zuweisung if(argv[i][j] == str1[k]){ strcat(erg,str2[k]); //geht nicht break; } } } strcat(erg," "); //geht nicht } return erg; }
-
strcat erwartet einen char*
str2[k] ist aber ein char!mach es so, wie ich geschrieben habe!
aber pass auf! erg hat KEINEN speicher.am besten du liest dir mal schnell ein zeiger tutorial durch, damit du weisst warum du erg besser so definierst:
char erg[100];
-
Mein lieber Freund,
Du musst zunächst einmal präzise die Aufgabe stellen (was ist gegeben, was soll herauskommen), wenn Du eine vernünftige Antwort haben willst! Einfach nein sagen gilt nicht! Soviel Zeit haben wir auch nicht. Grüsse
-
ok vielen dank habs jetzt hinbekommen
@jerry: na hättest die die Zeit mal gesparrt was? gehofen hat mir dein Kommentar nicht besonders!
grüße wodka