임의 암호 생성기에 대한 C ++ 루프 오류 "0이 아닌 상태로 종료"

에빈 왓슨

그래서 저는 C ++에서 루프와 조건문을 배우려고해서 사용자를 위해 임의의 암호를 생성하는 프로그램을 작성하기로 결정했습니다. 어떤 이유로이 코드는 1/5 번 작동하지만 나머지 시간에는 "Exited With Non-Zero Status"만 표시됩니다. 고마워, 에빈

#include <iostream>
#include <cstdlib>
#include <chrono>
#include <thread>
#include <time.h>
using namespace std;
int main() 
{
    using namespace std::this_thread;
    using namespace std::chrono;
//  Vars
    string lett;
    int input;
    string password("");
    string lettArray [] = {"a", "b", "c", "d", "e","f", "g", "h", "i", "j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

//  Prompt
    cout << "How long would you like your password to be?";
    cin >> input;
//  Loop
    for(int i = 0; i < input; i++)
    {
        struct timespec ts;
        clock_gettime(CLOCK_MONOTONIC, &ts);
        srand((time_t)ts.tv_nsec);
        int random = (rand() % 26 + 1);
        lett = lettArray[random];
        password = password + lett;
        sleep_for(milliseconds(10));
        cout << "." << endl;
        if (random == 0 )
            break;
    }
//  Output
    cout << password << endl;
    return 0;
}
니 코스 카 자자 키스

이 프로그램이 무작위로 실패하는 이유는 (의도 한 말장난) C-array를 사용하고 있으며 인덱스 범위가 잘못 되었기 때문입니다.

lettArray와 같은 C 배열은 배열 경계 위반 여부를 확인하지 않습니다. 귀하의 예 에서이 프로그램을 실행하면 해당 메모리 주소에 요소 lettArray[26]가 없기 때문에 세그먼트 오류가 발생 string합니다. C-array는 경계를 확인하지 않으므로 무엇이 잘못되었는지 파악하기 어려울 수 있습니다. 이것은 복잡한 프로그램에서 특히 까다로울 수 있습니다. 그 메모리 주소에 무언가가 발생하면 무의미한 결과를 얻을 수 있기 때문입니다.

더 나은 구현은 다음을 사용하는 것입니다 std::vector.

#include <iostream>
#include <cstdlib>
#include <chrono>
#include <thread>
#include <time.h>
#include <vector>
using namespace std;
int main() 
{
    // You don't need these two lines
    //using namespace std::this_thread;
    //using namespace std::chrono;

    //  Vars
    string lett;
    int input;
    string password("");

    // Vector index range: 0-25
    vector<string> lettArray = {"a", "b", "c", "d", "e","f", "g", "h", "i", "j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

    // You only need to initialise the seed once.
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    srand((time_t)ts.tv_nsec);

//  Prompt
    cout << "How long would you like your password to be?";
    cin >> input;

//  Loop
    for(int i = 0; i < input; i++)
    {
        int random = (rand() % 26 ); // You get results between 0-25
        // Using lettArray.at(26) will result in a crash with a clear 
        // message that bounds are violated  
        lett = lettArray.at(random); 
        password = password + lett;
        cout << "." << endl;

       // Don't see a reason for this if statement
       // if (random == 0 ){
       //     continue;
       //}
    }
//  Output
    cout << password << endl;
    return 0;
}

또한 무작위 시드를 루프 외부로 옮겼으며 (한 번만 필요함) 10 밀리 초 동안 일시 중지 할 이유도 없습니다. 결과가 상관없이 적절하게 무작위 화되는 것을 볼 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JUnit4 테스트 실패에 대해`groovy` 명령을 0이 아닌 상태로 종료하려면 어떻게해야합니까?

분류에서Dev

Linux CLI 감시 스위치 -e, --errexit "명령이 0이 아닌 상태로 종료됩니다. 종료하려면 키를 누르십시오."

분류에서Dev

AppleScript : 'Which <command>'가 0이 아닌 상태로 종료되었습니다.

분류에서Dev

열 곱셈에 대한 루프의 런타임 오류 1004

분류에서Dev

for 루프에서 C 런타임 오류

분류에서Dev

고유 암호 생성을위한 임의 시드 가져 오기

분류에서Dev

Qt 프로젝트 C2872 오류, 생성 된 UI 파일의 모호한 기호

분류에서Dev

오류 : $ rootScope : infdig AngularJS의 $ locationChangeStart에 대한 무한 $ digest 루프

분류에서Dev

Visual Studio 컴파일러 오류 : 위임 생성자에 대한 호출이 유일한 멤버 초기화 프로그램이어야합니다.

분류에서Dev

프린터에 대한 새 호스트 정의를 생성 한 후 센터 온 엔진 테스트 오류

분류에서Dev

insmod에 대한 Python 하위 프로세스 호출은 정의되지 않은 기호 오류를 생성하며 표준 셸에서 작동합니다.

분류에서Dev

C # : 직원의 로그인 암호 검색시 오류 발생

분류에서Dev

c의 루프 대괄호

분류에서Dev

JavaScript, for 루프의 대괄호로 인해 오류가 발생합니까?

분류에서Dev

에 대한 pandas synthax 오류의 데이터 프레임 :

분류에서Dev

xcode를 사용하여 C로 정적 라이브러리 생성, 오류 : "아키텍처 i386에 대한 정의되지 않은 기호"!

분류에서Dev

C 프로그래밍 오류 : 구조체에 대한 정의되지 않은 기호 (Keil 오류 L6218E)

분류에서Dev

Unity의 비대칭 암호화에 대한 최대 길이 및 메시지가 너무 김 오류

분류에서Dev

C의 숫자에 대한 Caesar의 암호

분류에서Dev

내 암호에 대한 while 루프를 만드는 방법

분류에서Dev

예기치 않은 파일의 끝 : 루프 구문 오류 인 루프에 대한

분류에서Dev

암호에 대한 C의 문자열 비교

분류에서Dev

배치 프로그램을 사용하여 PDF 파일에 대한 임의의 암호를 생성하는 방법

분류에서Dev

Centos에 대한 루트의 기본 암호는 무엇입니까?

분류에서Dev

C에서 대기열에 넣기 작업의 무한 루프

분류에서Dev

for 루프의 사전에 키 추가, 런타임 오류 발생

분류에서Dev

C #에 대한 drupal 7 암호 확인

분류에서Dev

중첩 루프에서 임의의 고유 한 번호

분류에서Dev

대부분의 구성 요소를 교체 한 후에도 PC 재부팅 루프 (프로세서 오류?)

Related 관련 기사

  1. 1

    JUnit4 테스트 실패에 대해`groovy` 명령을 0이 아닌 상태로 종료하려면 어떻게해야합니까?

  2. 2

    Linux CLI 감시 스위치 -e, --errexit "명령이 0이 아닌 상태로 종료됩니다. 종료하려면 키를 누르십시오."

  3. 3

    AppleScript : 'Which <command>'가 0이 아닌 상태로 종료되었습니다.

  4. 4

    열 곱셈에 대한 루프의 런타임 오류 1004

  5. 5

    for 루프에서 C 런타임 오류

  6. 6

    고유 암호 생성을위한 임의 시드 가져 오기

  7. 7

    Qt 프로젝트 C2872 오류, 생성 된 UI 파일의 모호한 기호

  8. 8

    오류 : $ rootScope : infdig AngularJS의 $ locationChangeStart에 대한 무한 $ digest 루프

  9. 9

    Visual Studio 컴파일러 오류 : 위임 생성자에 대한 호출이 유일한 멤버 초기화 프로그램이어야합니다.

  10. 10

    프린터에 대한 새 호스트 정의를 생성 한 후 센터 온 엔진 테스트 오류

  11. 11

    insmod에 대한 Python 하위 프로세스 호출은 정의되지 않은 기호 오류를 생성하며 표준 셸에서 작동합니다.

  12. 12

    C # : 직원의 로그인 암호 검색시 오류 발생

  13. 13

    c의 루프 대괄호

  14. 14

    JavaScript, for 루프의 대괄호로 인해 오류가 발생합니까?

  15. 15

    에 대한 pandas synthax 오류의 데이터 프레임 :

  16. 16

    xcode를 사용하여 C로 정적 라이브러리 생성, 오류 : "아키텍처 i386에 대한 정의되지 않은 기호"!

  17. 17

    C 프로그래밍 오류 : 구조체에 대한 정의되지 않은 기호 (Keil 오류 L6218E)

  18. 18

    Unity의 비대칭 암호화에 대한 최대 길이 및 메시지가 너무 김 오류

  19. 19

    C의 숫자에 대한 Caesar의 암호

  20. 20

    내 암호에 대한 while 루프를 만드는 방법

  21. 21

    예기치 않은 파일의 끝 : 루프 구문 오류 인 루프에 대한

  22. 22

    암호에 대한 C의 문자열 비교

  23. 23

    배치 프로그램을 사용하여 PDF 파일에 대한 임의의 암호를 생성하는 방법

  24. 24

    Centos에 대한 루트의 기본 암호는 무엇입니까?

  25. 25

    C에서 대기열에 넣기 작업의 무한 루프

  26. 26

    for 루프의 사전에 키 추가, 런타임 오류 발생

  27. 27

    C #에 대한 drupal 7 암호 확인

  28. 28

    중첩 루프에서 임의의 고유 한 번호

  29. 29

    대부분의 구성 요소를 교체 한 후에도 PC 재부팅 루프 (프로세서 오류?)

뜨겁다태그

보관