1%! 10%.

자료구조 제3강: 문자열

By  | 2018년 3월 10일 | 
문자열.문자열은 char 타입 배열. 각 칸마다 문자 하나씩 저장(영문 한글자 기준) char str[6];str[0] = 'h';........str[5] = '\0'마지막 str[5] = '\0'를 안했을 시에 끝을 알 수 없기 때문에 이상한 값이 찍힐 수 있다.문자열의 끝은 어떤 식으로든지 표시를 해줘야 한다.printf(), scanf() 등 여러 라이브러리 함수가 '\0'이 문자열의 끝에 있다는 전제 하에 쓰여져 있다. C언어는 문자열을 생성하는 편리한 방법을 제공.char str[] = "hello"; - string literal이 아니라 초기화로 해석됨.orchar *str = "hello"; - 여기서 hello는 데이터 영역(READ ONLY)에 저장됨. 따라서 이렇게 정의하면 수정이

자료구조 제5강: 예제2

By  | 2018년 3월 12일 | 
문장의 앞과 뒤에 붙은 공백문자는 제거. 단어 사이에 두 개 이상의 연속된 공백은 하나의 공백문자로 대체.int read_line_with_compression(char str[], int n){ int ch, pre = '\0', i = 0; // pre = '\0'은 '\0'필요 없이그냥 공백아니면 됨 while((ch = getchar() == ' ')); while(ch != '\n'){ if(i < n-1 && !(prev == ' ' && ch == ' ')){ str[i++] = ch; } prev = ch; ch = getchar(); } if(i > 0 && str[i-1] == '

포인터 배열. 문자열 여러개 저장.

By  | 2018년 3월 10일 | 
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char *str[101]; char buffer[101] = { 0, }; int n; int i; scanf("%d", &n); // string num char *p = NULL; p = (char *)malloc(strlen(buffer)); for(i = 0; i < n; i++){ scanf("%s", buffer); str[i] = strcpy(p, buffer); printf("%s\n", str[i]); } return 0; } stdin :

자료구조 제2강: C언어에서 동적메모리할당

By  | 2018년 3월 10일 | 
변수를 선언하는 대신 프로그램의 요청으로 메모리를 할당 : 동적 메모리 할당.동적할당 사용하려면 #include <stdlib.h> 필요.malloc() -> 시작 주소를 반환 int *p;p = (int *)malloc(10*sizeof(int)) -> 시스템, 플랫폼에 따라 경우가 다르기 때문에 sizeof 연산자 사용 필요함.if(p == NULL){ // 동적 메모리 할당 실패. 적절한 조치를 취해야 한다.} int *array = (int *)malloc(4*sizeof(int));int *tmp = (int *)malloc(8*sizeof(int));int i;for(i = 0; i < 4; i++){ tmp[i] = array[i];

자료구조 제4강: 예제1

By  | 2018년 3월 11일 | 
#include <stdio.h> int main(void) { char buffer[40]; while(1){ printf("$ "); gets(buffer); // scanf("%s", buffer); -> word 입력받을 때 사용. white space시 넘어 감 // gets는 line 입력받을 때 사용. newline character시 넘어 감 printf("%s:%d\n", buffer, strlen(buffer)); } return 0; } -> scanf()와 gets()는 모두 결함이 있다.문자열을 초과해서 입력해도 제대로 입력됨. -> 심각한 보안 결함으로 이어질 수 있다.gets_s(), fgets() 등을 대신 사용