티스토리 뷰

공부하면서 작성한 코드 입니다. 배열과 포인트를 사용하였고, 문자 변경, 출력, argv를 사용한 연습용 코드입니다.
기본적인 설명은 여기서 제외하고 설명하고 코드에 관한 주석만 사용합니다. 그리고 gcc 컴파일러를 사용하였습니다.
gcc 컴파일할 때 명령어는 gcc -std=c99 파일명.c 를 사용하였습니다.

아래처럼 출력되게 하는 연습용 코드입니다.

소스코드 및 주석

#include "stdio.h"
#include "string.h"
#define SIZE 100

void replaceArr(char *str, char searchChar, char replaceChar); //char 값을 변경하는 함수
void print(char *str); //*포인트를 출력하는 함수
void printTwo(char **str, int argc); //**포인트를 출력하는 함수
void printSelect(char **str, int argc); //특정 문자를 출력하는 함수
int main(int argc, char *argv[]) {
	char *strPoint; //포인트 char 변수
	char str[SIZE]; //100 SIZE를 가지는 char 변수

	strPoint = "Good words cost nothing"; //char 포인트 변수에 값을 입력
                                               //(그런데 이 방법은 문제가 있을 수 있음)
                                              //*strPoint = "Good words cost nothing";

	strcpy(str, "Nature admits not a lie"); //strcpy를 통해 str배열에 string을 복사
	
	print(strPoint); //*포인트를 출력
	print(str); //배열을 출력
	printTwo(argv, argc); //** 포인트를 출력

	if(argc > 0 ) { //./a.out abcdef (argv를 통해서 넘어온 값이 없을 경우 str배열을 선택
		argv[1] = str;
		argc = 1; //임의로 잡아준 값
	}
	printSelect(argv, argc); //특정 문자를 출력하는 함수

	replaceArr(str, 'a', 'u'); //a를 u로 변경
	print(str); //replaceArr를 한 후 출력

	return 0;
}

//문자를 변경 검색 Char, 변경할 char값
void replaceArr(char *str, char searchChar, char replaceChar) {
	for(int i = 0 ; i<strlen(str);i++) {
                //검색할 char값과, str 문자열의 한 글자가 동일할 경우
		if(str[i] == searchChar) {
			str[i] = replaceChar; //str[i]의 값을 변경할 char 값으로 복사
		}
	}
}

//* 포인트를 str 출력하는 함수
void print(char *str) {
	for(int i = 0; i<strlen(str);i++) {
		//한 단어 한단어를 출력 그냥 printf("%s", str)로 출력해도 동일
		printf("%c", str[i]);
	}
	printf("\n");
}

//** 포인트를 str 출력하는 함수
void printTwo(char **str, int argc) {
	for(int i = 0; i<argc;i++){
		printf("%s\n", str[i]);
	}
}

//특정 문자 하나만 출력(argv로 받아온 값을 통한 출력을 함)
void printSelect(char **str, int argc) {
	printf("Select char = %c, argc = %d\n", str[1][argc], argc);
	printf("%s\n", str[1]);
}

마무리
 간단한 문자열 포인터와 배열의 사용방법입니다. 기본적인 부분은 추가로 업로드하도록 하겠습니다.





댓글