2012-04-04 13 views
2

verschlüsseln Ich habe diese Funktion. Und sein Ziel ist, das letzte Zeichen zuerst eines Arrays zu nehmen, das Zeichen in Großbuchstaben, wenn es ein Buchstabe ist. Wenn es sich um eine Return-Taste (ASCII-Wert 10) oder eine Leerzeile handelt, drucken Sie diese ebenfalls aus. Alle anderen Charaktere drucken nicht. Beachten Sie mein sentinel_value = 10. Es funktioniert gut außer für meine else-Anweisung. Es wird nicht die Return-Taste gedruckt. Die Ausgabe erfolgt in einer Zeile. Irgendwelche Vorschläge?C++ Ascii-Wert Druck-Return-Taste aus Array

void EncryptMessage (ofstream& outFile, char charArray[], int length) 
{ 
    int index; 
    int asciiValue; 
    int asciiValue2; 
    char upperCased; 
    char finalChar; 


    for (index = length-1; index >= 0 ; --index) 
    { 
     upperCased = static_cast<char>(toupper(charArray[index])); 
     if (upperCased >= 'A' && upperCased <= 'Z') 
     { 
      asciiValue = static_cast<int>(upperCased) - 10; 
      finalChar = static_cast<char>(asciiValue); 
      outFile << finalChar; 
     } 
     else 
     { 
      asciiValue2 = static_cast<int>(charArray[index]); 
      if (asciiValue2 == SENTINEL_VALUE) 
      { 
       outFile << asciiValue2; 
      } 
     } 
    } 
} 

Antwort

1

asciiValue2 ist ein int, daher wird der ASCII-Wert in den Stream eingefügt (zwei Zeichen, '1' und '0'), nicht die Zeichendarstellung. Erklären Sie asciiValue2 als char und Sie sollten in Ordnung sein.

1

ascii 10 ist nur ein Zeilenvorschub. EOL Zeichen unterscheiden sich je nach System Sie sind auf
Fenster = CR LF
Linux = LF
osX = CR

Statt outfile<<asciiValue2;

versuchen outfile<<endl;

Endl zum EOL erweitert Zeichenfolge für das System, in dem Sie sich befinden.