본문 바로가기

Information Technology/C

[C언어] 문자열(1)

#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE 100

using namespace std;
// strcpy : 문자열 복사
// strlen : 문자열의 길이
// strcat : 문자열 합치기
// strcmp : 문자열 비교

int main()
{
	char str[] = "string"; // 겹 따옴표를 이용하면 컴파일러가 자동으로 배열의 크기를 맞춰서 저장
	//char *str = "hello"; 와 같은 string literal은 수정이 불가능함.

	char word[10];
	word[0] = 'h';
	word[1] = 'e';
	word[2] = 'l';
	word[3] = 'l';
	word[4] = 'o';
	word[5] = 0; // 문자의 끝을 알림
	//printf("%s", word);

	char* words[100]; // 배열의 한 칸에 저장되는 데이터의 타입. 단어들을 가리키는 포인터가 저장됨
	int n = 0; // number of strings;
	char buffer[BUFFER_SIZE];

	// scanf("%d", &a) 정수 가져올 때. &로 a의 주소를 가져옴. 배열은 배열의 이름 자체가 배열의 주소이기 때문에 & 필요 없음
	while (n < 4 && scanf_s("%s", buffer) != EOF) 
	{
		// words[n] = buffer;	// words의 모든 배열들이 buffer의 '주소'를 저장함
		words[n] = _strdup(buffer); // 문자열을 매개변수로 받고 그 복제본을 만들어서 그 주소를 전달해줌
		// words 자체가 문자열 배열은 아니기 때문에 strcpy를 통해 destination으로 설정 불가
		n++;
	}

	for (int i = 0; i < 4; i++)
		printf("%s\n", words[i]);

	return 0;
}

 

'Information Technology > C' 카테고리의 다른 글

[C언어] 전화번호부 v.4  (0) 2020.01.07
[C언어] 전화번호부 v.3  (0) 2020.01.06
[C언어] 전화번호부 v.2  (0) 2020.01.06
[C언어] 전화번호부 v.1  (0) 2020.01.06
[C언어] 문자열(2)  (0) 2020.01.05