C ++加密ascii值打印从数组返回键

时间:2012-04-04 16:50:20

标签: c++ arrays loops casting ascii

我有这个功能。它的目标是将最后一个字符作为数组的第一个字符,如果它是一个字母则将字符大写。如果是返回键(ASCII值10)或空白行,也将其打印出来。所有其他角色,不要打印。注意我的sentinel_value = 10.它的工作正常,除了我的else语句。它不打印返回键。输出全部在一行上。有什么建议吗?

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;
            }   
        }
    }
}

2 个答案:

答案 0 :(得分:1)

ascii 10只是一个换行符。 EOL字符因您所使用的系统而异 windows = CR LF
linux = LF
osX = CR

而不是 outfile<<asciiValue2;

outfile<<endl;

endl扩展为您所在系统的EOL字符序列。

答案 1 :(得分:1)

asciiValue2int,因此它的ASCII值插入流中(两个字符,'1'和'0'),而不是它的字符表示。将asciiValue2声明为char,您应该没问题。