#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int* pi;
pi = (int*)malloc(sizeof(int));
if (pi == NULL) {
printf("동적 메모리 할당에 실패했습니다.");
exit(1);
}
*pi = 100;
printf("%d\n", *pi);
//동적 메모리 사용한 이후에는 무조건 해당 메모리 반환
free(pi);
}
method1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
char arr[30];
int i = 0;
for (i = 0; i < 26; i++) {
arr[i] = 'a' + i;
}
for (i = 0; i < 26; i++) {
printf("%c ", arr[i]);
}
}
method2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
char* pc;
int i;
pc = (char*)malloc(100 * sizeof(char));
if (pc == NULL) {
printf("동적 메모리 할당에 실패했습니다.\n");
exit(1);
}
for (i = 0; i < 26; i++) {
*(pc + i) = 'a' + i;
}
//i는 26까지 반복하기에 반복문을 탈출했을 때는 i가 26이다.
*(pc + i) = 0; //맨끝에 널문자를 삽입(그럼 pc가 가리키는 배열을 계속 읽어나가다가
//z까지 읽고 널문자를 만나고 문자열이 끝남을 인식하고 pc 문자열 포인터 종료)
printf("%s\n", pc);
//%s는 널값을 만날때까지 문자열로 인식해서 출력한다.
free(pc);
return 0;
}
25-1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int len;
int i;
scanf("%d", &len);
getchar();
char* arr;
arr = (char*)malloc(len * sizeof(char));
if (arr == NULL) {
printf("동적 할당 실패\n");
exit(1);
}
fgets(arr, len+1, stdin);
arr[strlen(arr)-1] = 0;
len = strlen(arr); //만약 길이를 20으로 해놓고 그것보다 더 짧게 문자열 입력했을 경우 이상한 문자들 출력되는 거 방지
for (i = len; i >= 0; i--) {
printf("%c", *(arr+i));
}
free(arr);
return 0;
}
현재 strlen은 fgets로 인해 \n도 입력받고 있기에 길이가 +1이다 따라서 arr[strlen(arr)-1]=0을 통해 널문자로 바꿔주어 널문자는 제외한 길이를 갖도록 한다.
ex)fgets을 통해 abcd 입력받으면 strlen 값은 5 (abcd'\n') 따라서 arr[4]자리에 널문자를 넣어주면 strlen은 널문자를 제외한 문자열의 개수가 정확하게 나옴
25-2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int* arr;
int i=0;
int j;
int len=0;
arr = (int*)malloc(5*sizeof(int));
while(1) {
scanf("%d", &arr[i]);
if (arr[i] == -1) {
break;
}
if (arr == EOF) {
arr=(int*)realloc(arr, sizeof(int) * 3);
}
i++;
len++;
}
for (i = 0;i<len; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
'C' 카테고리의 다른 글
220810(CH26~27) (0) | 2022.08.10 |
---|---|
220802(CH23) (0) | 2022.08.02 |
220728(CH21) (0) | 2022.07.28 |
220726(CH13,18) (0) | 2022.07.26 |
220721(CH16) (0) | 2022.07.26 |