지원Support

스타트 C 프로그래밍을 쓰다 막히면 아래 문답을 먼저 봐 주세요. 앱 화면과 레슨은 한국어와 영어로 나오며 기기 언어를 따릅니다. If you get stuck, please check the answers below first. The app and its lessons are in English and Korean and follow your device language.

시작하기Getting started

어디서부터 배우면 되나요?Where should I start?

처음 열면 목표를 고르고 짧은 진단 퀴즈를 풀어 시작할 레슨을 추천받습니다. 다시 정하려면 설정 › 시작 지점 다시 정하기를 누르세요. 프로그래밍이 처음이라면 트랙 0 "프로그래밍 첫걸음"부터, C를 처음 보신다면 트랙 1 "프로그래밍 기초"부터, 다른 언어를 아신다면 트랙 2 "C 언어"부터 권합니다.

On first launch you pick a goal and take a short placement quiz that recommends a starting lesson. To redo it, tap Settings › Choose a new starting point. If programming is new to you, start with Track 0 "First Steps in Programming"; if C is new to you, start with Track 1 "Programming Basics"; if you already know another language, start with Track 2 "The C Language".

무료로 볼 수 있는 범위는요?What is free?

트랙 0 "프로그래밍 첫걸음"과 트랙 1 "프로그래밍 기초" 전체, 트랙 2·3·4·5·6·7의 첫 모듈(2.1 첫 C 프로그램, 3.1 비트·바이트·16진수, 4.1 소스에서 실행까지, 5.1 문자열 처리기, 6.1 프로세스와 fork, 7.1 임베디드 C의 세계), 부록 "컴퓨팅과 C의 계보" 전체는 무료입니다. 나머지 모듈은 트랙마다 한 번 구매하면 열립니다. 잠긴 레슨도 첫 카드는 미리 볼 수 있습니다.

All of Track 0 "First Steps in Programming" and Track 1 "Programming Basics", the first module of Tracks 2 to 7 (2.1 Your First C Program, 3.1 Bits, Bytes, and Hex, 4.1 From Source to Executable, 5.1 Text Processor, 6.1 Processes and Fork, 7.1 The World of Embedded C), and the whole appendix "Computing and the Lineage of C" are free. The other modules unlock with a one-time purchase per track. You can preview the first card of a locked lesson.

어떤 기기에서 쓸 수 있나요?Which devices are supported?

iOS 18 이상의 iPhone과 iPadOS 18 이상의 iPad입니다. 인터넷 연결 없이도 모든 기능을 쓸 수 있습니다(트랙 가격 확인과 구매·구매 복원만 App Store에 연결합니다).

iPhone with iOS 18 or later and iPad with iPadOS 18 or later. Every feature works offline; only track prices, purchases, and restoring purchases use the App Store.

앱의 언어를 바꾸려면요?How do I change the app's language?

앱은 기기 언어를 따라 한국어 기기에서는 한국어, 그 밖의 기기에서는 영어로 나옵니다. 앱 안에는 언어 설정이 없고, iPhone·iPad의 설정 앱에서 이 앱을 찾아 언어를 고르면 바뀝니다. 언어를 바꿔도 학습 기록은 그대로입니다.

The app follows your device language: Korean on Korean devices and English everywhere else. There is no language setting inside the app; open the Settings app on your iPhone or iPad, find this app, and pick a language. Your progress stays the same when you switch.

구매Purchases

구매한 트랙이 잠겨 보여요.A track I bought still looks locked.

구매할 때와 같은 Apple 계정으로 로그인한 뒤 설정 › 구매 복원을 눌러 주세요. 새 기기나 앱을 다시 설치한 기기에서도 이렇게 열 수 있습니다.

Make sure you are signed in with the same Apple Account you used to buy it, then tap Settings › Restore Purchases. This also works on a new device or after reinstalling the app.

환불은 어떻게 하나요?How do I get a refund?

결제는 Apple이 처리하므로 환불도 Apple에 요청합니다: reportaproblem.apple.com

Payments are handled by Apple, so refunds are requested from Apple: reportaproblem.apple.com

진도Progress

진도가 다른 기기로 이어지나요?Does my progress sync to my other devices?

지금은 이어지지 않습니다. 진도·퀴즈·실습 기록은 그 기기 안에만 저장됩니다. 구매한 트랙은 구매 복원으로 어느 기기에서나 열 수 있습니다.

Not yet. Progress, quiz, and exercise records are stored only on each device. Purchased tracks can be unlocked on any device with Restore Purchases.

처음부터 다시 배우고 싶어요.I want to start over.

설정 › 진도 초기화는 레슨 진도, 퀴즈 답, 실습 채점 기록을 모두 지웁니다. 지운 기록은 되돌릴 수 없습니다.

Settings › Reset progress erases all lesson progress, quiz answers, and exercise grades. This cannot be undone.

C 코드 실행Running C code

코드는 어디서 실행되나요?Where does my code run?

앱에 들어 있는 교육용 C 인터프리터가 기기 안에서 실행합니다. 한 줄씩 실행하고 되감으며, 함수를 부를 때 스택에 생기는 칸과 malloc으로 빌린 힙 블록, 포인터가 가리키는 곳을 그림으로 볼 수 있습니다. 프로그램은 앱 안의 가상 메모리에서만 돌아 기기의 파일이나 네트워크에 닿지 않습니다.

An educational C interpreter built into the app runs it on the device. You can step through one line at a time, step back, and watch stack frames, heap blocks from malloc, and where pointers point. Programs run only inside the app's virtual memory and cannot touch the device's files or the network.

실제 컴파일러와 결과가 같나요?Does it behave like a real compiler?

C99와 C11을 지원하고, 실행 결과를 Mac의 clang과 견주어 맞췄습니다. 레슨 예제와 실습 답안, 수백 개의 시험 프로그램이 clang으로 만든 프로그램과 출력·종료 코드까지 같습니다. 오류와 경고도 clang과 같은 문구에 한국어 설명을 붙여 보여 줍니다.

다만 교육용이라 일부 기능은 아직 없습니다: 넓은 문자, 인라인 어셈블리(__asm__), system·popen처럼 기기의 셸에 닿는 함수 등. 이런 코드를 쓰면 "아직 지원하지 않음"과 그 까닭을 알려 줍니다.

트랙 6의 fork·pthread_create·pipe·socket은 앱 안에서 가상으로 실행합니다. 프로세스·스레드·소켓은 기기의 것을 쓰지 않고, 소켓은 앱 안의 루프백에서만 연결됩니다.

트랙 7의 보드(LED·버튼·타이머·인터럽트·UART)도 앱 안의 가상 마이크로컨트롤러입니다. 레지스터에 쓴 값은 기기의 하드웨어에 닿지 않고, 버튼 누름과 터미널 입력은 정해 둔 대본에서 옵니다.

It supports C99 and C11, and its results are checked against clang on the Mac: lesson examples, exercise solutions, and hundreds of test programs produce the same output and exit codes as clang-built programs. Errors and warnings use clang's wording, with an explanation.

As a teaching tool it does not yet cover everything: wide characters, inline assembly (__asm__), functions that reach the device's shell such as system and popen, and a few others. If you use them, the app tells you they are not supported yet and why.

In Track 6, fork, pthread_create, pipe, and socket run virtually inside the app. Processes, threads, and sockets never use the device's own, and sockets connect only over loopback inside the app.

The board in Track 7 (LEDs, buttons, timer, interrupts, and UART) is also a virtual microcontroller inside the app. Values written to its registers never reach the device's hardware, and button presses and terminal input come from a script set in advance.

scanf로 입력을 받으려면요?How do I give input to scanf?

코드 편집 화면의 입력 칸에 입력을 미리 적은 뒤 실행하세요. 프로그램은 실행 중에 기다리지 않고 그 입력을 앞에서부터 읽으며, 실행 화면에서 어디까지 읽었는지 진한 글자로 보여 줍니다. 실습은 채점 테스트가 입력을 정합니다.

Type the input in the Input box on the edit screen before running. The program does not pause for input; it reads that text from the start, and the run screen shows in bold how far it has read. In exercises, the grading tests supply the input.

파일과 명령줄 인자는 어떻게 쓰나요?How do files and command-line arguments work?

코드 편집 화면의 파일 칸에서 실행을 시작할 때의 파일을 만들고 내용을 적고, 명령줄 인자 칸에 ./a.out 뒤에 올 낱말을 적으세요. fopen·open 같은 파일 함수는 앱 안의 가상 파일만 읽고 쓰며, 실행 화면에서 바뀐 바이트를 보여 줍니다. 실행할 때마다 적어 둔 내용으로 다시 시작하고, 가상 파일은 기기에 저장하지 않습니다.

On the edit screen, create the files the program starts with in the Files section, and type the words that follow ./a.out in the Command-line arguments box. File functions such as fopen and open read and write only these virtual files inside the app, and the run screen shows the bytes that changed. Every run starts again from what you typed, and the virtual files are never saved on the device.

배열 범위를 넘으니 실행이 멈췄어요.My program stopped when I went past the end of an array.

실제 C라면 조용히 옆 메모리를 망가뜨리는 실수(배열 범위 넘기, 해제한 메모리 쓰기, 이중 해제, 초기화 전 읽기 등)를 앱이 그 자리에서 멈추거나 경고하고 무슨 일이 일어났는지 설명합니다. 일부 레슨은 실제 기기처럼 덮어쓰는 모습을 일부러 보여 줍니다.

Mistakes that silently corrupt memory in real C (going past an array, using freed memory, freeing twice, reading before initializing, and so on) are stopped or flagged on the spot with an explanation. A few lessons deliberately show the overwrite as it would happen on a real machine.

문의Contact

위에서 답을 찾지 못하셨거나 오류를 발견하셨다면 메일로 알려 주세요. 어느 레슨·실습인지와 쓰신 코드를 함께 보내 주시면 빨리 살펴볼 수 있습니다.

If you could not find an answer or found a bug, please email us. Including the lesson or exercise and the code you wrote helps us look into it quickly.

chungkil.cksw@gmail.com