명령 줄 인수 분할 오류 (코어 덤프 됨)

user3713232

세분화 오류는 만져서는 안되는 메모리를 사용하려고한다는 것을 의미하지만 내 코드에서 어디에서 오는지 알 수 없습니다. 나는 vigenere의 암호를 사용하여 일반 텍스트를 암호화하는 과제를위한 프로그램을 작성했습니다. 잘 컴파일되지만 명령 줄 인수로 실행하면 분할 오류가 발생합니다.

#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

int main(int argc, string argv[])
{
// check to make sure the user entered a key
    if(argc != 2)
    {
        printf("You need to enter a key, and only one. Please enter an alphabetical key. \nSyntax: ./vigenere key \n");
        exit (1);
    }

// check to make sure the key is alphabetical
    string k = argv[1];
    if(isalpha(k) == false)
    {
         printf("Pleas enter an alphabetical key.\n");
         exit (2);
    }   
// Get a string of plaintext
    printf("Please enter your secret messege.\n");
    string p = GetString();
// Encipher
    int lk = strlen(k);
    int lp = strlen(p);
    for(int i = 0, j = 0; i < lp; i++, j++)
    {
        if(isupper(k[j]))
        {
            tolower(k[j]);
        }
        if(j > lk)
        {
            j = 0;
        }
        if(isalpha(p[i]))
        {
            if (islower(p[i]))
            {
                printf("%c", ((((p[i] - 97) + (k[j] - 97)) %26) +97));
            }
            else
            {
                printf("%c", ((((p[i] - 65) + (k[j] - 97)) %26) +65));
            }
        }
        else
        {
            printf("%c", p[i]);
        }
    }
    printf("\n");
    return 0;
}
자비에 르클레르 크

이 코드는 의심스러워 보입니다.

if(isupper(k[j]))
    {
        tolower(k[j]);
    }
    if(j > lk)
    {
        j = 0;
    }

k [j]를 사용하지만 나중에 확인하면 j가 lk보다 클 수 있음을 알 수 있습니다. 따라서 k [j]는 범위를 벗어날 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ : 분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨) c

분류에서Dev

C ++ 분할 오류 (코어 덤프 됨)

분류에서Dev

rviz 분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨) C ++

분류에서Dev

분할 오류 (코어 덤프 됨)-strlcpy 함수 C

분류에서Dev

virtualenv에서 pip를 실행할 수 없음-분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨) 포인터 구조체 데이터 유형

분류에서Dev

nam 오류 : 분할 오류 (코어 덤프 됨)

분류에서Dev

C 프로그램의 분할 오류 (코어 덤프 됨)

분류에서Dev

NASM 프로그래밍-분할 오류 (코어 덤프 됨)

분류에서Dev

포인터를 사용하여 strcat을 수행하는 동안 분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨)-2 차원 배열

분류에서Dev

분할 오류 (코어 덤프 됨)-argv-c

분류에서Dev

파이썬 분할 오류 (코어 덤프 됨)

분류에서Dev

fscanf-C에서 분할 오류 (코어 덤프 됨)

분류에서Dev

c에서 분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨)-구조;

분류에서Dev

Fortran-분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨) C lang

분류에서Dev

배열에 요소 삽입 : 분할 오류 (코어 덤프 됨)

분류에서Dev

C- 분할 오류 (코어 덤프 됨)

분류에서Dev

Ubuntu Semaphore : 분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨)-Linux 커널 문제

분류에서Dev

C-분할 오류 (코어 덤프 됨)

분류에서Dev

C에서 분할 오류 (코어 덤프 됨)

분류에서Dev

분할 오류 (코어 덤프 됨)를 어떻게 해결할 수 있습니까?

분류에서Dev

OpenCl : 샘플 float4 프로그램-분할 오류 (코어 덤프 됨)

분류에서Dev

OpenCl : 샘플 float4 프로그램-분할 오류 (코어 덤프 됨)

Related 관련 기사

  1. 1

    C ++ : 분할 오류 (코어 덤프 됨)

  2. 2

    분할 오류 (코어 덤프 됨) c

  3. 3

    C ++ 분할 오류 (코어 덤프 됨)

  4. 4

    rviz 분할 오류 (코어 덤프 됨)

  5. 5

    분할 오류 (코어 덤프 됨) C ++

  6. 6

    분할 오류 (코어 덤프 됨)-strlcpy 함수 C

  7. 7

    virtualenv에서 pip를 실행할 수 없음-분할 오류 (코어 덤프 됨)

  8. 8

    분할 오류 (코어 덤프 됨) 포인터 구조체 데이터 유형

  9. 9

    nam 오류 : 분할 오류 (코어 덤프 됨)

  10. 10

    C 프로그램의 분할 오류 (코어 덤프 됨)

  11. 11

    NASM 프로그래밍-분할 오류 (코어 덤프 됨)

  12. 12

    포인터를 사용하여 strcat을 수행하는 동안 분할 오류 (코어 덤프 됨)

  13. 13

    분할 오류 (코어 덤프 됨)-2 차원 배열

  14. 14

    분할 오류 (코어 덤프 됨)-argv-c

  15. 15

    파이썬 분할 오류 (코어 덤프 됨)

  16. 16

    fscanf-C에서 분할 오류 (코어 덤프 됨)

  17. 17

    c에서 분할 오류 (코어 덤프 됨)

  18. 18

    분할 오류 (코어 덤프 됨)-구조;

  19. 19

    Fortran-분할 오류 (코어 덤프 됨)

  20. 20

    분할 오류 (코어 덤프 됨) C lang

  21. 21

    배열에 요소 삽입 : 분할 오류 (코어 덤프 됨)

  22. 22

    C- 분할 오류 (코어 덤프 됨)

  23. 23

    Ubuntu Semaphore : 분할 오류 (코어 덤프 됨)

  24. 24

    분할 오류 (코어 덤프 됨)-Linux 커널 문제

  25. 25

    C-분할 오류 (코어 덤프 됨)

  26. 26

    C에서 분할 오류 (코어 덤프 됨)

  27. 27

    분할 오류 (코어 덤프 됨)를 어떻게 해결할 수 있습니까?

  28. 28

    OpenCl : 샘플 float4 프로그램-분할 오류 (코어 덤프 됨)

  29. 29

    OpenCl : 샘플 float4 프로그램-분할 오류 (코어 덤프 됨)

뜨겁다태그

보관