为什么这段代码不影响输出?

时间:2015-06-02 06:13:12

标签: c++

这应该是输入并将每个字母1向右移动。暂停是阻止它做任何事情吗?

如何更改它以便它不仅输出用户输入的内容?

这是Visual Studio Community 2013中的C ++代码:

#include "stdafx.h"
#include <iostream>
using namespace std;
#include <string>
#include <cctype>


int _tmain(int argc, _TCHAR* argv[])
{
    string cyphertext;
    cout << "Paste your cyphertext and press enter to shift right 1: ";
    cin >> cyphertext;

    void encrypt(char * cyphertext, unsigned int offset);

    for (int i = 0; cyphertext[i] != 0; i++) {
        char firstLetter = islower(cyphertext[i]) ? 'a' : 'A';
        unsigned int alphaOffset = cyphertext[i] - firstLetter;
        int offset = 0;
        unsigned int newAlphaOffset = alphaOffset + offset;
        cyphertext[i] = firstLetter + newAlphaOffset % 26;

        cout << "" << "Right One: " << cyphertext;

        system("pause");
        return 0;
    }
}

1 个答案:

答案 0 :(得分:2)

您的pause位于'加密'循环中。它需要在外面。循环中的return将终止程序;这也需要在循环之外。

请注意,当代码在正统布局(例如问题中现在的布局)中缩进时,更容易看到此类错误。使用有缺陷的布局使得很难看到很多问题在代码整齐排列时很明显。

您还声明了一个您从未使用过的函数encrypt();不要那样做。在其他函数中声明函数通常是个坏主意。鉴于没有定义encrypt()函数,没有'void函数',所以我已经为你更改了问题标题。