본문 바로가기

반응형

SWEET NEW

(352)
[C언어] 실습: 입력받은 문자열 역순으로 출력하기(포인터 변수) 입력받은 문자열 역순으로 출력하기(포인터 변수) 입력형식 출력형식 SWEETNEW WENTEEWS #include #include // strlen() int main(){ char str[100]; char *pstr; printf("입력 : "); scanf("%s", str); pstr = (char*)malloc(strlen(str) + 1); // NULL을 포함한 크기(size)를 입력한다. strcpy(pstr, str); // pstr에 str을 복사한다. printf("출력 : "); for(int i = strlen(pstr) - 1; i >= 0; --i){ // NULL을 제외한 문자열 길이를 초기값으로 준다. printf("%c", pstr[i]); } printf("\n"); r..
[C언어] 실습: 입력받은 문자열 역순으로 출력하기 입력받은 문자열 역순으로 출력하기 입력형식 출력형식 SWEETNEW WENTEEWS #include #include // strlen() int main(){ char str[100]; int len = 0; printf("입력 : "); scanf("%s", str); // 공백을 포함하지 않는 입력을 받을 때 scanf(), 공백을 포함한 입력을 받을 때 gets() len = strlen(str); // str에 저장된 문자열의 길이를 len에 저장한다.(NULL 제외) printf("출력 : "); for(int i = len - 1; i >= 0; --i){ // for문의 초기값을 len으로 주어 뒤에서 부터 문자열을 출력한다. printf("%c", str[i]); } printf("\n")..
[C언어] 문자열: strlen() strlen() 함수는 헤더파일에 정의되어 있다. NULL 전까지 문자열의 길이를 읽어온다. ​ #include #include // 문자열 처리 함수 : strlen(), ... int main(){ char str1[] = "hello"; char str2[] = ""; // ""는 NULL을 의미한다. int len = 0; printf("str1의 길이 : %d\n", strlen(str1)); printf("str1의 크기 : %d\n", sizeof(str1)); // sizeof()는 NULL을 포함한 값의 크기를 구해준다. printf("str2의 길이 : %d\n", strlen(str2)); printf("str2의 크기 : %d\n", sizeof(str2)); printf("'hi,..
[C언어] 문자열과 배열 1. 문자(배)열의 크기는 저장될 문자열의 길이 +1을 해준다. char str[10]; // "abcdefghi" 2. 배열의 크기인 10보다 작은 문자열로 초기화하면, 나머지 공간에는 NULL로 채워진다. char str[10] = "abc"; // abc까지 저장되고 나머지 공간에는 NULL로 채워진다. 3. 선언한 배열의 크기보다 더 큰 문자열을 초기화하려고 시도하면 'compile error'가 발생한다. 즉 문자열을 할당받은 저장 공간의 크기만큼 저장되고, 나머지 문자열 자리에는 쓰레기 값이 출력된다. char str[10] = "abcdefghijklmn"; // compile error 4. 배열을 초기화했을 경우, 배열의 크기는 따로 입력하지 않아도 된다. char str[] = "abc..
[C언어] 실습: 문자열 처리하기(동적 할당) 문자열 처리하기(동적 할당) step1. 문자열을 입력받기 위해서 충분한 크기의 문자 배열을 선언한다. step2. 문자열을 입력받는다. step3. 입력받은 문자열의 크기를 계산한 후, 그 공간만큼 동적할당받는다. step4. 할당받은 공간에 문자열을 대입한다. #include #include // malloc() #include // strlen(), strcpy(), strcat(), strcmp().. int main(){ // step1. 문자열을 입력받기 위해서 충분한 크기의 문자배열을 선언한다. char tmp[100]; // 충분한 공간을 확보하기 위한 임시문자배열을 선언한다. char *str[3]; // 동적 할당을 하기 위한 포인터 배열 변수를 선언한다. // step2. 문자열을 입..
[C언어] 동적 메모리 할당 (malloc, calloc) 동적 메모리는 메모리의 낭비를 방지하기 위해 할당하여 사용한다. - c: malloc(), calloc(), free() - c++: new, delete - java: new malloc() 함수는 메모리 공간을 할당하면 그 공간에 쓰레기 값이 들어가 있다. 또한 메모리를 할당할 수 없는 경우 'NULL'을 반환한다. 반면, calloc() 함수는 메모리 공간을 할당하면 그 공간이 0으로 초기화된다. #include #include // 동적할당 함수를 내장하고 있다. // malloc(), calloc() int main(){ int *pi; double *pd; pi = (int*)malloc(3*sizeof(int)); // int형 타입 3개 담을 공간을 할당한다. pd = (double*)ca..
[C언어] 이중 포인터 이중 포인터 - 포인터의 포인터 - 더블 포인터 - 싱글 포인터의 주솟값을 저장하는 용도의 포인터(단일 pointer를 가리키는 용도) // 이중 포인터 'pa'에 포인터 'p'의 주솟값 저장 int **pa = &p #include int main(){ int x = 100; int *p = &x; // pointer p에 변수 x의 주소값을 저장한다. int **pi = &p; // pointer pi에 포인터 p의 주소값을 저장한다. *p = 200; printf("x = %d, *p = %d, **pi = %d\n", x, *p, **pi); **pi = 300; // *pi == p, *(*pi) == *p == x printf("x = %d, *p = %d, **pi = %d\n", x, *p..
[C언어] const const int *p; // 읽기 전용 포인터(주소 변경 가능, 값 변경 불가능) int* const p; // 특정 변수 전용 포인터(주소 변경 불가능, 값 변경 가능) const int* const p; #include int main(){ int x = 10, y = 20; const int* p1 = &x; // pointer p는 '읽기 전용 포인터'이다. 포인터를 이용해서 값을 변경할 수 없다. // 포인터가 가리키는 주소는 변경할 수 있지만, 그 안에 저장된 값은 바꿀 수 없다. // == (int const *p1) printf("*p1 = %d\n", *p1); x = 30; // 직접 변경이 가능하다. printf("*p1 = %d\n", *p1); // *p1 = 20; // (오류..

반응형