반응형
이상한 세그먼트화(코어 덤프화) - C 프로그래밍 언어 연습 13
안녕, 나는 지금 K&R - C 프로그래밍 언어 연습 13을 하고 있어.지금까지의 코드는 다음과 같습니다.
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#define ARRAY_SIZE 99
int main() {
struct termios old_tio, new_tio;
/* get the terminal settings for stdin */
tcgetattr(STDIN_FILENO, &old_tio);
/* we want to keep the old setting to restore them a the end */
new_tio = old_tio;
/* disable canonical mode (buffered i/o) and local echo */
new_tio.c_lflag &= (~ICANON & ~ECHO);
/* set the new settings immediately */
tcsetattr(STDIN_FILENO, TCSANOW, &new_tio);
int c, length, lengthArray[ARRAY_SIZE], word, lastChar, longestWord;
word = 0;
longestWord = 0;
while ((c = getchar()) != 'q') {
if (c == ' ' || c == '\t' || c == '\n') {
if (lastChar != ' ' && lastChar != '\t' && lastChar != '\n') {
lengthArray[word] = length;
word++;
length = 0;
}
} else {
length++;
if (length > longestWord)
longestWord = length;
}
putchar(c);
lastChar = c;
}
int histogram[longestWord];
for (int i = 0; i < longestWord; i++) {
histogram[i] = 0;
}
for (int i = 0; i < word; i++) {
histogram[lengthArray[i]] += 1;
}
for (int i = 0; i < longestWord; i++) {
printf("%d: %d\n", i, histogram[i]);
}
/* restore the former settings */
tcsetattr(STDIN_FILENO, TCSANOW, &old_tio);
return 0;
}
매번 실행할 때마다 삽입 오류가 발생합니다. 마지막 for loop을 언급하지 않는 한.
for (int i = 0; i < longestWord; i++) {
printf("%d: %d\n", i, histogram[i]);
}
printf 스테이트먼트를 코멘트 아웃 하는 것은 도움이 되지 않기 때문에 for 루프가 문제입니다.(실제 연습코드는int c, length, lengthArray
Termios는 단말기에서 표준 모드를 비활성화하기 위한 것입니다.)
int 히스토그램[longestWord];배열 선언에서는 컴파일 시 크기를 알아야 합니다.실행 시에만 히스토그램이 알려진 크기를 지정할 수 없습니다.
언급URL : https://stackoverflow.com/questions/73593135/weird-segmentation-faut-core-dumbed-the-c-programming-language-exercise-13
반응형
'source' 카테고리의 다른 글
OSX 10.11(El Capitan)(시스템 무결성 보호)에 스크래피를 설치할 때 "OSError: [Errno 1] 작업이 허용되지 않음" (0) | 2022.09.06 |
---|---|
파일 권한을 프로그래밍 방식으로 변경하려면 어떻게 해야 합니까? (0) | 2022.09.06 |
Java Class.cast() 대 캐스트 연산자 (0) | 2022.09.06 |
다국어 정규 표현 단위 테스트는 어디서 볼 수 있나요? (0) | 2022.09.06 |
포인터로 가리키는 int의 증분값 (0) | 2022.09.06 |