char als int - speicherzugriffsfehler

Ich weiß nicht wie C das macht, aber wenn man nix den Variablen zuweißt, kann es sein dass dann einfach die Daten benutzt werden die an der Stelle im Speicher schon stehen?

Ja, das ist richtig. Wenn man eine Variable nicht initialisiert, hat sie einen willkuerlichen Wert.

Kannst Du nicht einen Beispieltext und die zugehoerigen Ergebniss schicken?
 
Hi,

Das mit dem scanf(), dass es nur ein Wort liest, stimmt. gets() verursacht bei mir einen Specherzurgriffsfehler, also hab ich den Cäsar-Code grad mal so in den Code eingegeben.

Code:
#include <stdio.h>

int main(int argc, char *argv[]) {
  char *code,*text,mostused = 'e';
  unsigned int letters[255];
  int i,key,biggest=0;
  for (i=0;i<255;i++) letters[i] = 0;

  // input
  //printf("Enter the code: ");
  //gets(code);
  code = "Hmiw$mwx$imr$Xi|x$qmx$zmipir$iiiiiw2";

  // get biggest
  i = 0;
  while (code[i]!=0) {
    letters[code[i]]++;
    i++;
  }
  /*for (i=0;i<255;i++) {
    if (letters[i]>0) printf("%c (%X): %i\r\n",i,i,letters[i]);
  }*/

  for (i=0;i<255;i++) {
    if (letters[i]>letters[biggest]) biggest = i;
  }

  // decode
  key = mostused-biggest;
  //printf("%i-%i = %i\r\n",mostused,biggest,key);
  i = 0;
  while (code[i]!=0) {
    text[i] = code[i]+key;
    i++;
  }
  text[i] = 0;

  // output
  printf("Der Text lautet: %s\r\n",text);

  return 1;
}

Die Ausgabe:
Der Text lautet: Dies ist ein Text mit vielen eeeees.

Ich hab ja ziemlich oft printf() auskommentiert. Ihr könnt die Kommentare wegmachen um z.B. nachzusehen welcher Buchstabe wie oft verwendet wurde.
 
Zuletzt bearbeitet:
@Schneemann
Das Teil löst bei mir n Speicherzugriffsfehler aus.

//edit
Onein!!!! Ich hab grad den Fehler gefunden. :D :D :D
Schaut euch das mal an: Eingabe:
Code:
> g++ analysis.cpp -o analaysis
Ausgabe:
Code:
> ./analysis input.txt output.txt
Hehe... Sry Leute. Jetzt funzt es jedenfalls.... :brav: Meine Lösung:
Code:
void caesar::analysis(void) {
   char c;
   int integer;
   int array[256];
   while(eingabe >> c) {
      integer = (int)c;
      integer = (integer+256) %  256;
cout << integer << " ";
      array[integer] = array[integer] + 1;
   }
};

Lg, sim4000.
 
manche haben hier aber einen programmierstil^^ hehe... wer was verschlüsseln will, sollte sich einfach mal die ascii tabelle anschauen!

>(int)c;
das ist doch nicht euer ernst?
 
Zuletzt bearbeitet:
Zurück
Oben