C언어/참고서: C언어 콘서트

C언어 51차시 system(), system("cls"), strncpy, strcat, strlength, scanf(), puts(), gets_s(), sizeof()

Olivia-BlackCherry 2023. 4. 7. 15:12

목차

    1. system() 함수

    운영체제의 명령어를 실행하는 기능 제공하므로, 사용하는 운영체제에 따라 명령어가 다를 수 있음.

    헤더파일 <stdlib.h>

     

    1-1 system("cls") 

    window 운영체제에서 쓰임.

    현재의 터미널 또는 명령 프롬프트 창의 내용 지움

    cls = clear screen의 약자

     

    1-2 system("dir")

    window 운영체제에서 사용

    현제 디렉토리의 파일 및 폴더 목록을 출력하는 명령어

    dir= directory의 약자

     

    #include <stdlib.h>
    
    int main() {
        // "cls" 명령어 실행하여 화면 청소
        system("cls");
    
        // "dir" 명령어 실행하여 파일 및 폴더 목록 출력
        system("dir");
    
        return 0;
    }

     

     

    2.  연습문제- 사용자로부터 패스워드 입력받기

    #include <stdio.h>
    #include <conio.h>
    #
    
    int main() {
    
    	char password[10];
    	int i;
    
    	system("cls");
    	printf("패스워드 입력하세요");
    	for (i = 0; i < 5; i++) {
    		password[i] = _getch();
    		printf("*");
    	}
    	password[i] = '\0';
    	printf("\n");
    
    	printf("입력된 패스워드는 다음과 같습니다");
    	printf("%s", password);
    }

    >>패스워드 입력하세요*****
    입력된 패스워드는 다음과 같습니다fdsfd

     

     

    3. 문자열 함수

    <string.h> 헤더파일에 있음.

    3-1 strlen(s) 

    문자열 s의 길이 구하기

    NULL 문자 포함안됨.

    #include <stdio.h>
    #include <string.h>
    
    int main() {
    
    	char s[4] = "abc";
    	
    	int len = strlen(s);
    
    	printf("문자열의 길이는");
    	printf("%d", len);
    }

     

    3-2 strcpy(s1, s2)

    문자열 s1s2의 복사값을 갖는다.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main() {
    
    	char s1[4] = "abc";
    	char s2[4];
    
    	strcpy(s2, s1);
    	printf("s2는");
    	printf("%s", s2);
    }

     

     

    3-3 strncpy(s1, s2, n)

    복사할 문자의 개수를 n개로 제한한다. 

    strcpy보다 안전한 함수이다.

    strncpy(s2, s1,4);

     

     

    3-4 strcat(s1, s2)

    s1에 s2를 연결한다.

    두 개의 문자열을 연결해서 하나의 문자열로 만든다.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main() {
    
    	char s1[4] = "abc";
    	char s2[4] = "def";
    	strcat(s2, s1);
    	printf("s2는");
    	printf("%s", s2);
    }

     

     

    3-5 strcmp(s1, s2) 

    s1과 s2를 비교해서 사전적인 순서에서

    어떤 문자열이 앞에 있는지 나타내는 숫자를 반환한다. 

    s1 s2 음수반환

    s1=s2 0

    s2 s1 양수반환

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main() {
    	int result = strcmp("dog", "dog");
    	printf("%d", result);
    	return 0;
    }

     

     

    4. 문자열 입출력

    4-1 scanf("%s", s) 

    문자열을 읽어서 배열 s에 저장

     

    4-2 printf("%s". s)

    배열 s에 저장되있는 문자열 출력

     

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main() {
    
    	char name[100];
    	printf("이름을 적으세요");
    	scanf("%s", name);
    	printf("%s", name);
    
    	return 0;
    }

    >>이름을 적으세요olivia kim
    olivia

     

     

    4-3 gets_s(char s[], int length)

    한 줄의 문자열 읽어서 배열 s[]에 저장

    length는 최대 문자 개수이다.

    gets_s()는 엔터키가 나올 때까지 한 줄 전체를 입력받는다. 

    줄바꿈 문자는 포함되지 않고, NULL 문자를 추가한다.

    입력받은 문자는 버퍼에 저장된다. 

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main() {
    
    	char name[100];
    	printf("이름을 적으세요");
    	gets_s(name, 20);
    	puts(name);
    
    	return 0;
    }

    int length 부분은 size를 정의하는 부분인데, 

    계산할 필요없이 size of()함수를 이용하면 더욱 편하다. 

    #include <stdio.h>
    
    int main() {
        char name[20];
    
        // 문자열 입력 받기
        printf("이름을 입력하세요: ");
        gets_s(name, sizeof(name)); // 문자열을 name 배열에 저장
    
        // 입력받은 문자열 출력
        printf("입력한 이름: %s\n", name);
    
        return 0;
    }

     

     

    4-4 puts(char s[]) 

    배열 s[]에 저장되어 있는 한 줄의 문자열을 출력한다.

     

    puts() 함수는 문자열을 자동으로 개행(newline) 문자와 함께 출력하며, 문자열의 끝에 자동으로 null 문자를 추가하여 출력을 마칩니다.

    puts() 함수는 문자열을 출력하는 간단한 함수로 많이 사용됩니다. 다만, 입력 받은 문자열에 대한 검증과 같은 고급 기능을 수행할 필요가 있다면, 더 복잡한 입출력 함수인 printf() 함수를 사용하는 것이 더 적합할 수 있습니다. printf() 함수는 포맷 문자열을 사용하여 다양한 형식의 출력을 지원하며, 더 많은 옵션과 기능을 제공합니다.

    #include <stdio.h>
    
    int main() {
        // 문자열 출력
        puts("Hello, world!");
    
        // 변수에 저장된 문자열 출력
        char name[] = "John";
        puts("My name is:");
        puts(name);
    
        return 0;
    }