#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int sz = 0x30;
char *buf = (char *)malloc(sizeof(char) * sz);
puts("Hello World!");
printf("Education + Hack = ?\n");
fgets(buf, sz, stdin);
if (!strncmp(buf, "DreamHack", 9))
printf("Welcome Hackers :)\n");
else
printf("No No :/\n");
return 0;
}
#!/usr/bin/python3
quiz = [116, 66, 85, 81, 93, 120, 81, 83, 91]
for i in range(len(quiz)):
quiz[i] ^= 0x30
quiz = ''.join([chr(_) for _ in quiz])
answer = input()
if answer == quiz:
print("Welcome Hackers :)")
else:
print("No No :/")
문자열 출력 함수
puts("string");
result : string
문자열 읽기 함수
현재 stream 위치에서 어느것이 먼저 오건 첫 번째 줄 바꾸기 문자(\n) 까지, 스트림의 끝까지 또는 읽은 문자 수가 n-1 과 같을때 까지 문자를 읽는다.
fgets(buf, sz, stdin);
stdin : 표준 입력을 의미하는 변수
-> 표준입력을 통해서도 문자열 받을 수 있음
즉, 상단의 코드는 buf에 입력받은 string 을 저장하고, sz 크기로 출력한다.
문자열 비교함수
string1 과 string2 를 비교한다.
문자열 비교함수
string1 과 string2 를 비교하되, 매개변수로 받은 n 의 길이 까지만 비교한다.
따라서
if(!strncmp(buf, "Dreamhack", 9)); printf("Welcome Hackers :)\\n");
에서 "Welcome Hackers:)" 가 반환되도록 하기 위해서는 if 문에서 0이 반환이 되어야하고, buf 의 문자열과 "Dreamhack" 의 문자열이 길이 '9' 만큼 같은지 검사 후, 0이 반환되도록 해야하므로 입력값은 "Dreamhack" 이어야만 "Welcome Hackers:)" 가 반환된다.