인터넷에 접속해 본 적이 있다면 "leetspeak"(또는 우리의 목적에 따라 "l33tsp36k"!)를 본 적이 있을 것입니다. 여기에는 알파벳 문자를 기호로 대체하는 작업이 포함되며, 이러한 기호는 알파벳 문자와 다소 유사합니다. 이 실습에서는 특정 모음을 숫자로 바꾸는 프로그램을 작성합니다!
지금까지 배포 코드가 제공되는 프로그램을 자주 작성했습니다. 이 문제에 대한 "distro"를 다운로드할 때 일반적으로 사용되는 몇 가지 라이브러리와 빈 기본 기능만으로 시작한다는 것을 알 수 있습니다. 이번 문제에서는 명령줄에 입력할 단어를 모음 대신 숫자가 붙은 해당 단어로 변환해 보겠습니다.
Hints

get_string, get_int 등이 아닌 명령행 인자를 사용하려는 이유는 무엇일까요?
#include <cs50.h>
#include <stdio.h>
string replace(char word[]);
int main(int argc, string argv[])
{
if (argc == 1 || argc > 2)
{
printf("Usage: ./no-vowels word\n");
return 1; // error
}
else
{
printf("%s\n", replace(argv[1]));
return 0;
}
}
string replace(char word[])
{
// a e i o u
// 6 3 1 0 u
for (int i = 0; word[i] != '\0'; i++)
{
switch (word[i])
{
case 'a':
word[i] = '6';
break;
case 'e':
word[i] = '3';
break;
case 'i':
word[i] = '1';
break;
case 'o':
word[i] = '0';
break;
}
}
return word;
}
매개변수로 문자열을 받는다는 것을 확실히 하기 위해서는 매개변수 뒤에 [] 대괄호를 붙여주면 된다. 대괄호 안에 들어가는 배열의 크기는 생략한다.
#include <stdio.h>
string chararray(char s1[]) // char 배열 매개변수 지정, 크기 생략
{
printf("Hello, %s\n", s1); // Hello, 와 매개변수를 조합하여 문자열 출력
}
string charpointer(char *s1) // char포인터 매개변수 지정
{
printf("Hello, %s\n", s1); // Hello, 와 매개변수를 조합하여 문자열 출력
}
char형 배열 char형 포인터
가리키는 위치 변경 불가능 가능
문자열 내용을 변경 가능 불가능