본문 바로가기

언어/C언어 - 300제

097 - 메모리를 블록 단위로 할당하기 (calloc) ================================================= #include #include #include int main(void) { char* pmem; printf("sizeof(int)의 길이는 %d 입니다.\n",sizeof(int)); pmem = calloc(100,sizeof(int)); if(pmem == NULL){ puts("메모리를 할당할 수 없습니다."); }else{ puts("정수형 변수 100개를 저장할 버퍼가 할당되었습니다."); free(pmem); } return 0; } ================================================= calloc함수는 malloc 함수와 다르게 calloc함수에 의해 할당 된 메.. 더보기
096 - 메모리 할당하기(malloc) ================================================= #include #include #include #include #define MEMORY "MEMORY" int main(void) { char* pmem; pmem = malloc(100); if(pmem == NULL) { puts("메모리를 할당 할 수 없습니다."); } else { strcpy(pmem,MEMORY); puts(pmem); free(pmem); } return 0; } ================================================= malloc()는 메모리에서 원하는 만큼의 메모리를 할당 받을 수 있다. malloc 함수의 리턴값은 메모리 할당이 성공했을 경우 그 .. 더보기
055 - 문자열 입력받기(gets) #include int count(char *str); main(void) { char string[100]; char *ret; puts("문자를 입력하세요 : "); ret = fgets(string,100,stdin); // (받을인자,버퍼용량,입력방식) ※stdin->표준키보드입력 if(ret != NULL) { printf("문자 'a'의 갯수는 %d개입니다.\n",count(string)); } } int count(char *str) { int cnt = 0; while(*str !=(int)NULL) { if(*str++ == 'a')cnt++; } return cnt; } 더보기
060 - 문자열을 비교하는 함수 만들기 책과 다르게 코딩 해봄.. 아래의 코드는 입력 받은 문자열과 비교 문자열이 모두 NULL 문자를 가질때까지 비교하므로 책의 소스보다 처리 속도면에서 떨어짐 참고 : scanf()는 공백문자를 입력 하지 못하므로 한단어만 비교 가능!!! ================================================= #include #include #define SKY "sky" int My_strcmp(const char*, const char*); int main(void) { char string[100]; int ret; printf("영단어를 입력한 후 Enter키를 치세요\n"); printf("sky를 입력하면 프로그램이 종료됩니다.\n"); do{ scanf("%s",string);.. 더보기
059 - 문자열을 대,소문자로 구분하여 비교하기(strcmp) ================================================= #include #include #define SKY "sky" int main(void) { char string[100]; int ret; printf("영단어를 입력한 후 Enter키를 치세요\n"); printf("sky를 입력하면 프로그램이 종료됩니다.\n"); do{ scanf("%s",string); ret = strcmp(string,SKY); if(ret == 0){ printf("%s == %s, ret = %d\n", string,SKY,ret); break; }else if(ret < 0){ printf("%s < %s, ret = %d\n", string,SKY,ret); }else{ prin.. 더보기
058 - 문자열을 복사하는 함수 만들기 ================================================= #include char* my_strcpy(char*,const char*); int main(void) { char str[100]; my_strcpy(str,"kangdeokhun"); puts(str); return 0; } char* my_strcpy(char* dest, const char* src) { char* pdest=dest; // dest의 주소를 저장 if(dest == (int)NULL || src == (int)NULL){ if(*dest != (int)NULL){ *dest = (int)NULL; } return NULL; } do{ *dest++ = *src; }while(*src++ .. 더보기
057 - 문자열 복사하기(strcpy) ================================================= #include #include int main(void) { char str[100]; char* string=str; strcpy(string,"kangdeokhun"); printf("%s\n",str); return 0; } ================================================= char* strcpy(char* dest, const char* src); strcpy 함수의 두 인수는 다른 형을 가진다. 첫번째 인수 dest는 char 포인터형 변수이고, 두번째 인수 src는 char 포인터형 상수이다. 여기서 중요한 점은 dest 인수로 char형 상수, 초기화 되지 않은 .. 더보기
022 - 부호 연산자 이해하기(+,-) ================================================================= #include main() { int x = +4; int y = -2; printf("x+(-y) = %d \n",x+(-y)); printf("-x+(+y) = %d \n",-x+(+y)); } ================================================================= C언어에서의 부호연산자는 수학에서의 부호연산과 일치한다. 더보기
021 - 대입 연산자 이해하기(=) ================================================================= #include main() { int x=1; int y=2; int z; int zz; z = x + y; zz = printf("z의 값 : %d\n",z); printf("zz의 값 : %d\n",zz); } ================================================================= 대입연산자는 오른쪽에 위치한 값 또는 연산의 결과를 왼쪽 변수(L-Value)에 대입해주는 역할을 한다. printf()함수는 출력한 바이트수를 return 한다. 참고로 이 프로그램에서는 한글(2byte)과 개항문자(1byte)에 의해 11이 출력되었다. 더보기
016~020 - 상수 이해하기 ================================================================= #include #define HUNDRED 100 #define TRUE 1 #define FALSE 0 #define BOOK "This is a book" const char j=10; const char* SOCCER = "나는 축구를 좋아합니다."; main() { HUNDRED = 200; // 에러발생 j = 200; // 에러발생 printf("문자형 상수 HUNDRED의 값은 %d\n",HUNDRED); printf("문자형 상수 j의 값은 %d \n",j); printf("문자열형 상수 BOOK의 값은 %s \n",BOOK); printf("문자열형 상수 SOCCER의 .. 더보기