본문 바로가기

c언어

14. 변수에 대한 고급 이론

1. typedef 예약어를 사용하여 unsigned char형을 BYTE형으로 정의하는 코드를 작성하세요.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

typedef unsigned char BYTE;

void main(void)
{
	BYTE byte = 'A';
	putc(byte, stdout);
	return;
}

[실행결과]

 

 

2. char형 배열을 전역 변수로 선언한 후, main() 함수에서 사용자로부터 문자열을 입력받아 전역 변수에 저장합니다. 그리고 전역 변수에 저장된 문자열을 출력하는 void PrintData() 함수를 작성하고 main() 함수에서 이를 호출하는 프로그램을 작성하세요.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

void PrintData();

char* g_pszData;

void main(void)
{
	char szBuffer[128] = { 0 };

	printf("Input your string: ");
	g_pszData = gets_s(szBuffer, __crt_countof(szBuffer));
	PrintData();
	return;
}

void PrintData()
{
	puts(g_pszData);

	return;
}

[실행결과]

 

 

3. 2번에서 작성한 프로젝트에 Test.c 파일을 추가한 후, PrintData() 함수의 정의와, 문자열을 저장하는 전역 변수의 선언, 모두를 Test.c 파일로 이동합니다. 그리고 이와 같은 변화에도 아무런 문제가 발생하지 않도록 main() 함수가 있는 소스 파일에 코드를 추가하세요.

[소스코드]

> Main.c

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

void PrintData();
extern char* g_pszData;
void main(void)
{
	char szBuffer[128] = { 0 };
	printf("Input your string: ");
	g_pszData = gets_s(szBuffer, __crt_countof(szBuffer));
	PrintData();
	return;
}

> Test.c

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>

char* g_pszData = NULL;
void PrintData()
{
	puts(g_pszData);
	return;
}

[실행결과]

 

 

4. 원형이 [void PrintString(char* pszData);]와 같은 함수를 작성합니다. 이 함수는 인자로 전달받은 문자열을 화면에 출력합니다. 최초에 호출될 때는 길이와 상관 없이 무조건 출력하지만 이후로는 앞서 출력한 문자열보다 인자로 전달받은 문자열이 더 길 경우에만 출력합니다. main() 함수의 코드가 다음과 같다면 Test와 String만 화면에 출력되어야 합니다. 단, 절대로 전역 변수를 사용하지 말아야 합니다.

[소스코드]

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <string.h>

void PrintString(char* pszData)
{
	static char* pszPrintData = "";
	int nLength = strlen(pszPrintData);
	int nNewLength = strlen(pszData);
	if (nLength < nNewLength)
	{
		pszPrintData = pszData;
		puts(pszPrintData);
	}
	return;
}

void main(void)
{
	PrintString("Test");
	PrintString("String");
	PrintString("Data");
	PrintString("New");
	return;
}

[실행결과]

 

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

16. 구조체와 공용체  (0) 2023.06.28
15. 함수에 대한 고급 이론  (0) 2023.06.27
13. 유틸리티 함수  (0) 2023.06.23
12. 문자, 문자열 처리 함수  (0) 2023.06.21
11. 함수  (0) 2023.06.17