2D 배열 값을 늘리면 프로그램이 충돌합니다.

TheInnerParty

주어진 문자열에서 문자가 사용되는 횟수를 추적하는 C로 문자 빈도 카운터를 만들고 있습니다. 2d 배열은 프로그램이 각 문자를 반복하는 동안 데이터를 추적합니다.

char* input = "The cat jumped over the fence";
int inputlength = (int) strlen(input);

//keeps track of how many times each character is used
int letterfrequencies[26][2] = {
    {'a',0},
    {'b',0},
    {'c',0},
    {'d',0},
    {'e',0},
    {'f',0},
    {'g',0},
    {'h',0},
    {'i',0},
    {'j',0},
    {'k',0},
    {'l',0},
    {'m',0},
    {'n',0},
    {'o',0},
    {'p',0},
    {'q',0},
    {'r',0},
    {'s',0},
    {'t',0},
    {'u',0},
    {'v',0},
    {'w',0},
    {'x',0},
    {'y',0},
    {'z',0}
};
int currentchar=0;
int letternum=0; //character position in char counting array
for (int i=0; i<inputlength; i++) {
    currentchar=input[i];
    letternum=0;
    while (currentchar!=letterfrequencies[letternum][0]) {
        letternum++;
    }
    printf(" Found a character ");
    letterfrequencies[letternum][1]++; //Add to char counting array
    printf("\n");
}

루프의 첫 번째 반복에서 (중단 점이있는 xCode 디버거를 사용하고 있습니다) 모든 것이 예상대로 작동합니다. 그러나 첫 번째 반복 후에는 다음 행이 표시됩니다.

letterfrequencies[letternum][1]++;

Thread 1 : EXC_BAD_ACCESS (code = 2, address = 0x7fff5fc2e84c)라고 말하면서 프로그램이 충돌합니다. 라인을 주석 처리하면 모든 것이 문제없이 실행됩니다. 원인은 무엇입니까?

일부 프로그래머 친구

입력 문장에는 대문자 및 소문자와 공백이 모두 포함되지만 letterfrequencies배열에는 소문자 만 포함됩니다. 따라서 대문자 또는 공백이 있고 검색 할 때 어떤 일이 발생할지 생각해보십시오. 찾을 수 없으므로 while계속해서 배열 범위를 벗어나 정의되지 않은 동작으로 이어 집니다.

isspace함수를 사용하여 공백을 확인하고 tolower대문자를 소문자로 변환을 사용하십시오 .

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

for 루프에서 2D 배열을 인쇄하면 프로그램이 충돌합니다.

분류에서Dev

대형 2D 배열을 선언하면 프로그램이 어떻게 충돌 할 수 있습니까?

분류에서Dev

DataPoint 배열에 값을 추가하면 실행 중 응용 프로그램 충돌이 발생합니다.

분류에서Dev

포인터 배열을 삭제하면 호출자의 응용 프로그램이 충돌합니다.

분류에서Dev

Swift iOS. 버튼 배열을 변경하려고하면 프로그램이 충돌합니다.

분류에서Dev

변수 filename으로 파일을 열려고하면 c 프로그램이 충돌합니다.

분류에서Dev

malloc 후 배열에 값을 할당하면 충돌이 발생합니다.

분류에서Dev

for 루프에서 값을 두 배로 늘리려면 constexpr이 필요합니다.

분류에서Dev

2D 배열 / 그리드의 값 / 노드 바로 옆에 "이웃"을 가져옵니다.

분류에서Dev

내 방정식 풀기 프로그램에서 nil 값을 입력하면 앱이 충돌합니다.

분류에서Dev

데이터베이스 쿼리에 네 번째 열을 배치하면 내 앱이 충돌합니다.

분류에서Dev

Cuda에서 스레드의 2D 블록을 Lauching하면 충돌이 발생합니다.

분류에서Dev

"연결 프로그램"을 사용하면 C # WPF 앱이 자동으로 충돌합니다.

분류에서Dev

간단한 방정식에서 get을 scanf로 바꾸면 프로그램이 충돌합니다.

분류에서Dev

arraylist에 막대한 양의 비트 맵을로드하면 내 응용 프로그램이 충돌합니다.

분류에서Dev

Swift에서 닫힌 NSWindow를 열면 응용 프로그램이 충돌합니다.

분류에서Dev

특정 태블릿에서 사진을 찍으면 응용 프로그램이 충돌합니다

분류에서Dev

배열을 날짜 순서로 정렬하면 장치에서 충돌이 발생합니다.

분류에서Dev

2D 배열의 모든 부울 값을 반대로 변경하려면 어떻게해야합니까?

분류에서Dev

2d 배열을 함수에 전달하고 작업이 완료되면 2d 배열을 반환합니다.

분류에서Dev

DBD / DBI : 프로그램이 분기되면 충돌합니다.

분류에서Dev

GAS에서 3D 배열을 2D 배열로 변환하려면 어떻게해야합니까?

분류에서Dev

활동에서 브로드 캐스트 수신기로 값을 전달하려고하면 응용 프로그램이 충돌합니다.

분류에서Dev

Bresenham의 라인 알고리즘을 구현하면 gldrawpixels ()를 사용하는 프로그램이 충돌합니다. 그 이유는 무엇입니까?

분류에서Dev

2 차원 배열을 인쇄하는 동안 프로그램 충돌

분류에서Dev

다른 2D 배열을 기반으로 2D 배열 재정렬

분류에서Dev

2D 문자 배열을 다른 2D 문자 배열로 복사

분류에서Dev

c-pointer에서 numpy 배열을 만들면 ipython 커널이 충돌합니다.

분류에서Dev

Rails 4.2에서 js.erb에서 배열을 렌더링하면 충돌이 발생합니다.

Related 관련 기사

  1. 1

    for 루프에서 2D 배열을 인쇄하면 프로그램이 충돌합니다.

  2. 2

    대형 2D 배열을 선언하면 프로그램이 어떻게 충돌 할 수 있습니까?

  3. 3

    DataPoint 배열에 값을 추가하면 실행 중 응용 프로그램 충돌이 발생합니다.

  4. 4

    포인터 배열을 삭제하면 호출자의 응용 프로그램이 충돌합니다.

  5. 5

    Swift iOS. 버튼 배열을 변경하려고하면 프로그램이 충돌합니다.

  6. 6

    변수 filename으로 파일을 열려고하면 c 프로그램이 충돌합니다.

  7. 7

    malloc 후 배열에 값을 할당하면 충돌이 발생합니다.

  8. 8

    for 루프에서 값을 두 배로 늘리려면 constexpr이 필요합니다.

  9. 9

    2D 배열 / 그리드의 값 / 노드 바로 옆에 "이웃"을 가져옵니다.

  10. 10

    내 방정식 풀기 프로그램에서 nil 값을 입력하면 앱이 충돌합니다.

  11. 11

    데이터베이스 쿼리에 네 번째 열을 배치하면 내 앱이 충돌합니다.

  12. 12

    Cuda에서 스레드의 2D 블록을 Lauching하면 충돌이 발생합니다.

  13. 13

    "연결 프로그램"을 사용하면 C # WPF 앱이 자동으로 충돌합니다.

  14. 14

    간단한 방정식에서 get을 scanf로 바꾸면 프로그램이 충돌합니다.

  15. 15

    arraylist에 막대한 양의 비트 맵을로드하면 내 응용 프로그램이 충돌합니다.

  16. 16

    Swift에서 닫힌 NSWindow를 열면 응용 프로그램이 충돌합니다.

  17. 17

    특정 태블릿에서 사진을 찍으면 응용 프로그램이 충돌합니다

  18. 18

    배열을 날짜 순서로 정렬하면 장치에서 충돌이 발생합니다.

  19. 19

    2D 배열의 모든 부울 값을 반대로 변경하려면 어떻게해야합니까?

  20. 20

    2d 배열을 함수에 전달하고 작업이 완료되면 2d 배열을 반환합니다.

  21. 21

    DBD / DBI : 프로그램이 분기되면 충돌합니다.

  22. 22

    GAS에서 3D 배열을 2D 배열로 변환하려면 어떻게해야합니까?

  23. 23

    활동에서 브로드 캐스트 수신기로 값을 전달하려고하면 응용 프로그램이 충돌합니다.

  24. 24

    Bresenham의 라인 알고리즘을 구현하면 gldrawpixels ()를 사용하는 프로그램이 충돌합니다. 그 이유는 무엇입니까?

  25. 25

    2 차원 배열을 인쇄하는 동안 프로그램 충돌

  26. 26

    다른 2D 배열을 기반으로 2D 배열 재정렬

  27. 27

    2D 문자 배열을 다른 2D 문자 배열로 복사

  28. 28

    c-pointer에서 numpy 배열을 만들면 ipython 커널이 충돌합니다.

  29. 29

    Rails 4.2에서 js.erb에서 배열을 렌더링하면 충돌이 발생합니다.

뜨겁다태그

보관