1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | // ConsoleApplication5.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다. // #include "stdafx.h" #pragma warning(disable:4996)//_s없을떄 오류잡는거 #include <windows.h> //표준함수 //제공되어있는 함수 //printf(),scanf_s(),rand(),strlen(),strcmp(),sleep(),cls() void func81() { char ar[10] = "apple"; printf("%d %d\n", sizeof(ar), strlen(ar)); //sizeof는 배열의 크기 strlen는 문자열의 크기 char br[10] = "호랑이"; printf("%d %d\n", sizeof(br), strlen(br)); //sizeof는 배열의 메모리크기 strlen는 문자열의 크기 //한글은 2btye 영문은 1btye char *name[5]; while (1) { char ar[16]; //2의 배수형식을 주로 사용한다 printf("이름을 입력하시오 종료하실려면 종료라고 입력하세요\n");//간단한 ui scanf("%s", &ar); //&ar이나 &ar[0] _s를 안썻을떄 오류 if (strcmp(ar, "종료") == 0) {//strcmp(a,b) //"문자열a,b를 비교",return값이 있다 문자열의값이 같으면0 . 주요 15함수중 하나 printf("프로그램을 끝냅니다."); break; } printf("%s %d\n", ar,strlen(ar)); } int size = strlen(ar); printf("%d", size); } void func77() { int a = strcmp("토끼", "호랑이");//같을떄 0 다르면 다른값. int b = strcmp("토끼", "토끼"); printf("%d %d\n", a,b); printf("%d\n",strcmp("토끼", "토끼")); if (strcmp("토끼", "토끼") == 0) printf("같다\n"); else printf("다르다\n"); } //strcmp와 같은 함수를 직접만들기 //쓰는 세가지 방식 //int a= func78("토끼", "호랑이"); //printf("%d\n", a); //printf("%d\n", func78("토끼", "토끼")); //func78("토끼", "호랑이"); int func78(const char *a, const char *b) {//const char *a ="tiger" - const뺴면 안됨. printf("콜\n"); int s1 = strlen(a);//길이가 다르면 일단 문자열이 다르다(길이만 봤을때) int s2 = strlen(b); if (s1 != s2) { return -1; } for (int i = 0; i < s1; i++) { if (a[i]!=b[i]) {//각각의 배열값이 같은지 return -1; } } return 0; } void func79() { //밑에 여러가지방법 쓰는법 char *p;//%s는 메모리몇개를 가지고 출력하라는지 모름,메모리NULL을만나면 멈춘다.- 주소출력 p = new char[4+1];//이 방식이 가장 선호되는 방식이다. p[0] = 'A'; p[1] = 'B'; p[2] = 'C'; p[3] = 'D'; p[4] = NULL; printf("%s\n", p); const char *t = "ABCD";//*문자열에 넣어주려면 const써줘야된다. printf("%s\n",t);//얘는 자동으로 t[4]번에 NULL값을 넣어준다. char b[4+1] = "ABCD";//NULL넣어줄 공간을 +1해주던가 아니면 아예 비워둬야된다. printf("%s\n", b); char f[] = { 'A','B', 'C', 'D',NULL};//NULL넣어주면 쓰레기값안나온다. printf("%s\n", f); } void func80() { const char *s = "Apple"; char ar[10]; for (int i = 0; i < 5; i++) { ar[i] = s[i]; } ar[5] = NULL; printf("%s %s\n", s, ar);//ar배열에 apple넣고 남는 쓰레기값을 출력 ar[5] = NULL; 써주면 정상적으로 가능 char br[10]; strcpy(br, s);//s가 가지고있는 내용을 br에다가 copy한다. 복사를 하고 NULL조차도 같이 넣어줘서 쓰레기값이 안나온다! printf("%s\n", br); char *d = new char[5+1]; strcpy(d, s);//destination source 목적지, 소스 dest,src로 보통쓴다. printf("%s\n", d); const char *src = "무궁화 꽃이 피었습니다.tiger"; char *dest = new char[strlen(src)+1];//길이대로 넣어주고+1 NULL넣어주면된다 strcpy(dest, src); printf("%s\n", dest); } int main() { func80(); } | cs |
728x90
댓글