-3

これが Visual Studio 2012 で正しく動作しない理由がわかりません

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

char nullChar()
{
    char ch;

    int ran = (rand() % 52);

    if (ran < 26) 
        {
            ch = (char) ('a'+ ran);
        } 
    else 
        {
            ch = (char) ('A'+ ran - 26);
        }

    return ch;
}

int main(int argc, char *argv[]) 
{ 
    cout << "Enter a string";

    int nullNum = 0;
    nullNum = atoi(argv[2]);

    if (strcmp(argv[1], "-d") == 0)
        {
            int count = -1;

            do
                {
                    int c = cin.get();
                    count++;

                    if(count == nullNum)
                        {
                            cout.put(c);
                            count = -1;
                        }

                } while (!cin.eof()) ;
        }

    if(strcmp(argv[1], "-e") == 0)
        {
            char c = cin.get();

            while(!cin.eof())
                {
                    for (int i = -1; i < (nullNum-1); ++i)
                        {
                            cout << nullChar();
                        }

                    cout << c;
                    c = cin.get();
                }
        }


} 

コードは完全にコンパイルされます。ループで何かを疑っていますが、わかりません。また、数日前は完全に実行されたと思いますが、現在はそうではありません。それは可能ですか?

4

1 に答える 1

2

パラメータを渡したかどうかわかりません。しかし、それとは別に、argv[xyz] を使用する前に常に argc をチェックする必要があります。私の推測では、argv[1] と argv[2] がないため、segfault が発生します。

于 2013-10-31T22:45:37.497 に答える