c언어-(문자열 string, 배열)

2022. 3. 17. 16:35C언어

728x90

문자열(String)은 일련의 문자가 연속되어 있는 것이며 문자의 집합이 곧 문자열이다. 

사람의 이름이나 에러 메시지 등과 같은 일반적인 문장을 문자열이라고 한다. 문자열 상수는 문자 상수와 달리 겹 다운 표로 감싸서 표현된다. 

 

예시) 문자: 'a' 문자열: "abc"

' ' 홀따옴표랑 " " 겹 따옴표를 사용할 때는 분명히 구분해야 한다. 'S'와 "S"는 비슷해 보여도 내부적으로 엄청난 차이가 있다. 'S'는 S라는 문자 하나만 표현하지만 "S"는 한 글자로만 된 문자열이다. 

 

문자열 상수는 있지만 이런 문자열을 저장할 수 있는 문자열 타입이라는 것은 없다. 

자열 상수 ex) char ch[10]="abcdefg"; (c언어) string str="abcdefg"; (c++) a="abcdefg";(python)

 

이게 c언어의 단점이다. 

 

ch[10]이거는 배열의 개념을 배워야 알 수 있다. 

그렇기 때문에 그냥 그렇구나~하고 넘어가자 

 

배열

배열의 선언 방법

[타입(자료형)] 배 열명[크기];

 

예시)

int arr [5] //정수형 변수 5개의 집합인 배열 array를 선언

double rate [10]; //실수형 변수 10개의 집합인 배열 rate를 선언

 

그리고 이렇게 할당된 배열에서 요소를 참조할 때는 [] 괄호와 첨자(index)를 사용한다.  첨자는 요소가 그 배열의 몇 번째에 있는지를 나타내는 순서 값이다. 

 

배열이란 같은 타입의 변수를 모아 놓은 것이며 문자 배열이란 문자형 변수 여러 개가 연속적으로 배치되어 있는 것이다. 그림에서 각 격자는 1바이트의 문자들이며 각 격자에 문자 하나씩이 들어있다.  제일 끝에는 '\0'이 있는데 '\0'은 여기가 문자열의 끝임을 알리는 역할을 하며 널 종료 문자라고 한다. 메모리는 연속적인 공간이므로 끝을 명확히 해야 한다.  다른 자료형은 \0이 없어도 된다. 

 

배열

배열의 범위는 반열림 기호를 사용한다  arr [10] 0~9까지 10개의 공간을 만들어준다.

 

 

#include <stdio.h>
int main() {

	char ch[9] = "abcdefgh";
	int numArr[10] =  { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 };
	printf("\n"); 
	//여기에 중단점 찍고 배열 확인
	printf("%s\n", ch);
	printf("%d\n", numArr[0]);
	printf("%d\n", numArr[1]);
	printf("%d\n", numArr[2]);
	printf("%d\n", numArr[3]);
	printf("%d\n", numArr[4]);
	printf("%d\n", numArr[5]);
	printf("%d\n", numArr[6]);
	printf("%d\n", numArr[7]);
	printf("%d\n", numArr[8]);
	printf("%d\n", numArr[9]);
	//printf("%d\n", numArr[10]); 여기는 배열의 범위를 넘어갔음 
	return 0;
}

위 코드는 위에 배웠던 문자열 상수, 자료형이 정수인 배열을 선언 및 출력을 해봤다.

 

그리고 가장 많이 쓰는 코드가 있는데

예를 들어서 문제를 풀때 10명의 성적중 가장 큰 성적인 친구의 점수랑 그 가장큰 친구의 성적이 몇번째로 입력 받은 값인지 구하는 문제가 있다고 치자, 그러면 배열을 사용해서 문제를 풀어보면 배열을 이해하는데 도움이 되고, 앞으로 이러한 유형의 문제를 푸는데에 있어서 접근이 더욱 쉽다.

#include <stdio.h>
#pragma warning (disable : 4996);
int main()
{
	

	int arr[10] = { 0, };
	int max = 0;
	int max_num = 0;
	for (int i = 0; i < 10; i++) { //0~9 까지 10번 돌아가는 반복문이다.
		scanf("%d", &arr[i]);
		if (max < arr[i]) { //만약에 입력받은 값이 최대값보다 크면? 최대값을 갱신
			max = arr[i]; //최대값 갱신
			max_num = i; //입력받은 순서 갱신
		}
	}
	printf("\n");
	printf("가장 높은 점수를 받은 친구: %d\n", max);
	printf("가장 높은 점수를 받은 친구를 입력받은 순서: %d", max_num+1);

	return 0;
}

 

 

 

 

 

 

 

 

728x90

'C언어' 카테고리의 다른 글

c언어 - 조건문(if , else, else if)  (0) 2022.03.23
c언어-(if 조건문)  (0) 2022.03.17
c언어-(자료형 실수형, 문자형)  (0) 2022.03.15
c언어 -(자료형)  (0) 2022.03.15
c언어 - (변수)  (0) 2022.03.10