String ausgabe funktioniert nicht
-
Hallo Community,
ich habe ein kleines Problem. Ich bin gerade dabei ein Programm zu schreiben was mir von zwei Codewörtern die Hamming-Distanz berechnet. Das klappt auch soweit ganz gut. Ich möchte alles dings gerne die Modulo 2 Additions der beiden Codewörter gerne ausgeben. Ich bekomme das ganze auch schon wunderbar in ein neues Char-Array gepackt. Nur bei der Ausgabe haperts.
Ich habe den betroffenen Code mal auskommentiert. Das Problemm ist das ich das komplette array einzeln durlaufen muss um Zeichen für zeichen auszugeben.
Das krieg ich so hin.Geht das nicht auch einfacher? Über Puts(v) ? Ich bekomme jedenfalls wenn ich es darüber versuche nicht meinen XOR Wert der beiden Codewörtern. Ebenso über Printf komme ich nicht zum ergebniss.
Kann mit bitte jemand auf die Sprünge helfen.
#include <stdio.h> #include <conio.h> char HammingDistance(char Code[],char Code2[]) { int array_groese,Hamming; char i; char v[80]={' '}; array_groese =0; Hamming =0; while (Code[array_groese]!='\0'){array_groese++;}//Größe des String-Arrays bestimmen for (i=0;i<=array_groese-1;i++) { if ((Code[i]^Code2[i])==1){Hamming=Hamming+1;} //v[i] = (Code[i]^Code2[i]);//<<----- Wie kann ich diesen String ausgeben? } /*for (i=0;i<=array_groese-1;i++) { printf("%d",v[i]); }*/ return(Hamming); } //-------------------------------------------------------------------------------------------------------- int IstZiffer(char Eingabe[]) //Function die einen String auf 0 oder 1 durchsucht, werden andere Ziffern gefunden gibt sie 0 zurück { int i,array_groese; array_groese =0; //Initialisiert array_groeße while (Eingabe[array_groese]!='\0'){array_groese++;} //Ermitteln der Array-Größe for (i=0;i<=array_groese-1;i++)//Jedes Einzelne Zeichen im String überprüfen { if (Eingabe[i] >='0' && Eingabe[i] <= '1'){}//Wird ein Wert gefunden der 0 oder 1 ist mach nichts. else {return(0);}//Wird ein Wert gefunden der nicht 0 oder 1 ist liefere eine 0 zurück } return(1); //Funktion ist korrekt durchgefallen nur Zahlen vom Typ 0 oder 1 enthalten, Funktion gibt den Wert 1 zurück } //-------------------------------------------------------------------------------------------------------- void main() { char Code2[80]; char Code1[80]; int i; i=0; printf("Bitte geben Sie Codewort 1 ein: "); gets(Code1); printf("Bitte geben Sie Codewort 2 ein: "); gets(Code2); if((IstZiffer(Code1)&&IstZiffer(Code2))==1) {printf("Die Hamming-Distance betraegt HD:%d\n",HammingDistance(Code1,Code2));} else {printf("Sie haben einen Falschen Binaer-Code eingegeben\n");} }
-
Bitte nächstes mal die [cpp][/cpp]-Tags benutzen.
Deine Zeile 22 funktioniert nicht. Du sagst printf soll ein int printen, gibst ihm aber ein char.
Entweder du machst
printf("%c",v[i]);
oder
printf("%d",(int)v[i]);Ich blick nicht ganz durch.
Hast du ein '\0'-Zeichen am Ende von v?
Wenn nicht mach eins ran.
Hast du Zeichen kleiner 30 oder größer 127? Dann hast du Zeichen die man nicht direkt ausgeben kann, zum Beispiel Backspace-Zeichen lassen sich schlecht darstellen, dann kannst du an besten den Hexwert ausgeben.
printf("%02x",(int)v[i]);Die 02 sollte für eine führende 0 bei Zeichen mit nur einer Ziffer erzeugen, musste mal die printf-Doku ankucken wenns nicht stimmt.
Edit: Ach ja, v soll ja ein string sein. Wahrscheinlich tuts schon
printf("%s",v);