# printf
Java 기본 입출력
기본 출력 기본적인 출력은 System.out.println을 하면 된다. 표준 출력에 출력후 줄바꿈을 한다. formatted 출력 System.out.printf를 활용. 문법은 C랑 매우 유사하다. 다만 정수는 type 상관없이 %d로 출력을 한다. newline은 %n를 권장한다. \n은 OS에 따라 다른 의미를 가질 수 있어서... '실수를' 지수 형태로 출력을 원하면 %e 사용. 정수는 안 됨. char의 경우 숫자처럼 print하려면 미리 형변환을 해야 한다. 출력시 사용할 최소 길이, 소수점 밑 자리수 조절, String의 일부 출력, 좌우 정렬, 16/8진법을 위한 접두사 붙이기, 빈 공간에 0 넣기 등도 가능하다. 예시코드 이진수 형태로 출
[42 SEOUL] ft_printf - 가변 인자
0. before > 꼭 서클 끝내고 나서 과제 기억이 남아 있을 때 시험을 보자 ✍️ > 사람들이 그걸 추천하는 데는 다 이유가 있다 😑 > 다른 카뎃들은 청개구리 같은 나처럼 후회하지 않기를 바라며. 🐸 1. 가변 인자 va_list : 가변인자를 저장할 수 있는 타입니다. 2. va_start 가변인자의 첫 번째 주소를 알려주는 매크로이다. -> 순차적 접근을 할 수 있도록 해준다! 가변 인자의 시작 포인터 설정하는 것이다. 즉, 가변 인자 초기화 담당이라고 할 수 있다. 매크로 내에서 v 기준으로 그 다음 메모리 포인터로 초기화한다. 인자 : va_list의 instance & 마지막 위치의 고정인수 3. va_arg va_list의 포인터를 다음 가변인자 주소값으로 넘겨주는 매크로이다. 가변 인자 메모리 공간에서 전달한 자료형

TIL - 전역변수 | 정렬 출력 | Git add
문제1 - 대기 번호 출력하기 1) 문제 현재 진행하고 있는 개인 과제는 키오스크를 만드는 것이다. 어느정도는 구현이 된 상태인데, 대기 번호를 출력하는 곳에서 막혀버렸다. 몇 번째 주문인지를 파악해야 한다는 점인데, 그렇다면 ,,, 이 사람이 실질적으로 Order 하고 나서 주문번호가 count 되어야 한다. 그리고 증가된 주문번호를 무사히 출력해주어야 한다. 2) 시도 온통 메소드들 투성이라, 어디에 변수를 생성하고 값을 추가해주면 좋을 지 고민이 되었다. 실행할 메소드 안에다 변수를 생성한다면, 그 메소드를 실행할 때마다 변수가 초기화되어 대기번호를 늘리면서 출력하는 의미가 사라질 것이다. 그렇다면 ..? 출력할 메소드들을 작성해둔 클래스(MyMenu) 내에 필드를 생성해보자 ! 이렇게 각 메소드 안에 생성하는 것이 아닌 클래스 내부에 위쪽에 필드를 선언해 주었다. 초기값은 0으로 설정하고, 주문이 완료될 때마다 대기번호를 하나씩 증가하는 메소드
Java 출력문
printf 출력문 예시 > public static void main(String[] args) { // printf 출력문 형식 System.out.printf("100+100 ="); System.out.printf("\n"); System.out.printf("%d", 100 + 100); System.out.printf("\n"); System.out.printf("%f", 1.0 + 1); } println 출력문 예시 > for (int i = 1; i for (int i=1; i<=5; i++) { // {}안의 for문 5번 반복 for (i

서식 문자 출력 - printf()
서식 문자열을 모르는 바보가 있다? 그게 바로 저에요 문제 문제 설명 두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요. a + b = c 제한사항 1 ≤ a, b ≤ 100 입출력 예 입력 4 5 출력 4 + 5 = 9 위와 같은 문제를 푸는데 멋쟁이 개발자처럼 서식 문자열로 출력하고 싶었다! 근데 이렇게 쓰니까 안된다? 당연히 안 된단다. printf()를 써야한단다? 풀이 내 풀이 내가 원했던 풀이 서식 문자 일반 문자가 아닌 서식에 사용되는 문자를 서식 문자라고 한다. %d : 10진수 (정수) %o : 8진수 %x : 16진수 %f : 실수 %c : 문자 %s : 문자열 printf() 에 대입해서 사용가능하다!
국비 3-1
System.out.print(); 단순 출력 (출력 후 줄바꿈X) System.out.println(); 한 줄 출력 (출력 후 줄바꿈 수행) System.out.printf(): 출력될 문자열 형식을 패턴으로 지정하는 출력구문 '': char 리터럴 표기법 "": String의 리터럴 표기법 escape 문자 -tab: \t -new line: \n -역슬래시: \\ -작은 따옴표: \' -큰 따옴표: \" -유니코드: \u System.out.printf("%형식", 변수); %d(정수형), %c(문자), %s(문자열) %f(실수형-소수점 아래 6자리), %b(논리형)

[Java] 콘솔 입출력
📌콘솔 출력 1. 출력하기 : System.out.print() >print() 는 줄바꿈을 하지 않고 단순 출력만 한다. 2. 출력하고 줄 바꾸기 : System.out.println() >println() 줄 바꿈이 되어 출력된다. 3. 형식대로 출력하기 : System.out.printf() 지시자|출력 포맷 ---|--- %b|불리언 %d|10진수 %o|8진수 %x,%X|16진수 %c|문자 %s|문자열 %n|줄바꿈 📌콘솔 입력 데이터를 입력받는 코드는 아래와 같다 import java.util.Scanner; 데이터를 입력받는 기능을 작은 프로그램으로 만들어둔 것이 Scanner이다. import는 import java.util.Scanner;는 java.util에 있는 Scanner를 불러와라 라는 의미가 된다. `Scanner scanner = new Scanner(Sys

[Java] Solution to puzzles 🔥
🧩 클래스 다이어그램에 따라 코드 작성하기 Q1 split()과 parsing을 사용하여 String 문자열을 배열로 만든 후, 합과 평균 계산하기 > 💁 주어진 String 데이터를 “,”로 나누어 5개의 실수 데이터들을 꺼내어 합과 평균을 구하세요. 단, String 문자열의 모든 실수 데이터를 배열로 만들어 계산합니다. ◼ StringTest Class 💬 Overall Comment Q2 GregorianCalendar 클래스와 SimpleDateFo

[JAVA]진짜 매번 헷갈리는 Printf 소수점 출력
1. Printf 왜 쓰는가? 우리가 가장 자주 쓰는 System.out.println은 출력형식에 맞게 출력을 해줄 수 없다. 특별히 소수점 같은 형식을 맞춰 출력해줘야 할 경우 printf를 통해 사용하면 효과적이다. 2. Printf는 어떻게 쓰는가? System.out.printf("표현할 형식",값, 값.....); **줄바꿈 경우, %n을 붙여 사용하면 됩니다 ex) %d%n, %s%n...** 3. 다양한 서식문자 형식 4. 두개 이상의 서식문자 사용  에서 인자를 몇개를 넣어도 잘 돌아간다. printf의 프로토타입을 확인해보면 다음과 같다. > int printf(const char* format, ...) 이때 두번째 인자로 사용되는 … 이 가변인자, 혹은 가변 파라미터라고 불리는 것이다. 먼저 가변 인자 함수를 만들기 위해서는 stdarg.h 헤더파일을 포함해야한다. 이 헤더 파일에 가변인자 함수를 만들 때 필요한 각종 매크로 들이 정의되어 있다. 또한 최소 1개 이상의 고정인수 가 있어야 한다. va_list : 각 가변 인자의 시작 주소를 가리킬 포인터 이다. vastart : valist로 만들어진 포인터에세 가변인자 중 첫번째 주소를 가르쳐주는 매크로이다. > #define vastart(ap, v) ( (ap) = (valist)_AD
Protostar : format4
Redirection RIP (EIP) 는 프로그램이 현재 실행시켜야할 Instruction 이 저장된 주소를 가르킨다. 이때 RIP 가 우리가 원하는 Instruction 이 저장된 주소를 가르키게 할 수 있다면, 프로그램의 흐름을 우리가 원하는 대로 redirection 할 수 있게 된다. gdb 분석 `` : call 0x80483ec : RIP (EIP) 가 0x80483ec 가 된다. 이는 exit 함수의 Instructions 임을 알 수 있다. `` : jmp *0x8049724 : RIP (EIP) 가 0x8049724 가 참조하는 값이 된다. Exploit strategy <img src="http
Protostar : format3
스택 프레임 CPU 에서 하나의 프로세스가 실행될 때 할당받게 되는 메모리의 구조이다. 주목할 점은 프로세스 내에서 새로운 function call 이 발생하면 전달할 인자들을 stack 에 저장하고 스택 포인터를 줄여서 새로운 function 을 위한 stack 을 할당한다. printf(" %n", &arg) %n 은 매칭되는 arg 에 %n 이 등장하기 전까지의 string byte 수를 저장한다. arg = length(" "); 그렇다면 printf 가 불릴 때.. <img src="https://velog.velcdn.com/images/compact/post/ce82d0
JAVA_printf()
printf("형식문자열", 값1, 값2, . . .) %[argument_index$] [flags] [width] [.precision] conversion % → 형식문자열의 시작을 의미 argument_index$ → 값의 순번 flags → -,0 width → 전체 자리수 .precision → 소수 자리수 conversion → 변환문자 // 제공되는 값의 타입에 따라 d(정수), f(실수), s(문자열)가 온다. % 와 변환문자는 필수로 작성한다. > ex) System.out.printf("이름: %s", "조지아") // 이름 : 조지아 ex) System.out.printf("나이: %d", 100) // 나이 : 100 형식문자열에 포함될 값이 두 개 이상인 경우, 순번(argument_index$)을 포함시켜야한다. > ex) System.out.printf("이름: %1$s", "나이 : %2$d", "조지아", 100) //

ft_printf - printf만들기
들어가기에 앞서 > 42서울에서는 printf를 일반적인경우 사용을 제한했습니다. 그 이유는 write(int fd, const void *buf, size_t n) 함수를 활용해서 파일디스크립터에 대해 생각하고, 출력의 내용을 담는 버퍼에 대해 배우고 이해하기 위함이라 생각합니다. 이번에 만들 ft_printf를 통해서 가변인가자 무엇인지 배우게 되고, 문자열에 따른 파싱을 진행하게 됩니다. 단순해보이는 printf에도 다양한 기능이 있고, 내부적으로 어떻게 돌아가는지 파악 할 수 있는 과제입니다. printf 함수의 Format Placeholder Syntax(서식 표기 구문)은 %로 시작하는 형식 태그로 표기 되며, 그 구문은 아래와 같습니다. printf의 많은 필드 중에서 flag 필드의 -, 0, ., * 그리고 width 및 precision 필드,type 필드의 c, s, p, d, i,
01.Circle [ft_Printf]
(1) 구현순서 가변인자 받기 (...) %기준으로 뒷 글자 파싱 파싱한 문자를 가지고 형식에 맞게 출력 출력한 문자 수 카운트하여 최종 반환 (2) 알아야할 점 (3) 로직
[Java] 자료형2 (String/StringBuffer/Array)
1. 문자형(String) 문자열은 문장을 의미한다. new는 키워드 객체를 만들 때 사용한다. > '객체'를 다루기 전까지는 "새로 생성된 자료형" 정도의 의미로 알고 있도록 하자. 리터럴 표기법은 문자열을 intern pool이라는 곳에 저장하고 동일한 문자열이 선언될 경우 cache된 문자열을 리턴한다. 반면에 두번째 방식은 항상 새로운 String 객체를 생성한다. 1. 원시(primitive) 자료형 이전에 살펴본 int, long, double, float, boolean, char등을 자바는 원시(primitive) 자료형이라 한다. 이런 자료형들은 new 키워드로 그 값을 생성할 수 없으며, 아래와 같이 리터럴로만 생성할 수 있다. (String은 리터럴로 표기가 가능하지만 primitive 자료형은 아니지만 리터럴로 표현식을 사용할 수 있는 특별 자료형이다!) 원시 자료형의 Wrapper 클래스

printf 01
01. 개요 c언어를 처음 배우면 마주하게되는 printf, 정말 편리한 함수라고 생각을 하였다 근데 그 편리함을 다 구현하려고 해보니 정말 머리가 미쳐버릴거 같다 이전까지의 과제들은 정리를 안하고 머리속으로만 구현할 수 있었지만 프엡부터는 도저히 불가능 할거 같아서 글로 정리를 해가며 구현해볼것이다 02. 함수의 사용법 >printf >int printf("출력할 데이터와 서식", 변수1, 변수2 ....) >int printf(const char *format, ...) 첫번째 인자는 출력할 데이터를 넣는 공간이다 여기서 데이터를 넣을때 변수를 넣을수 있는데 "%()" %와 해당하는 옵션을 이용하여서 두번째 인자를 불러오는식으로 구성되어있다 데이터 안쪽에서 %의 개수가 들어오는만큼 변수의 개수도 늘어나게되는데 이런식으로 매개변수의 개수가 바뀌는것을 가변인자라고 합니다 03. 가변인자 >**`가변인

C언어: printf의 사용법
Printf 사용법 printf printf 를 사용할 때에는 기본적으로 Printf(""); 로 사용한다. >#include //헤더파일 int main(void) { //함수 선언 printf("Hello world"); return 0; //초기화 } 출력할 데이터 입력 "내 점수는 98점"을 변수 없이 출력할 경우 > printf("내 점수는98점"); 이라고 하면 되지만 98이라는 숫자를 변수로 바꾸고 싶다면 전 시리즈에서 설명한것과 같이 %d서식문자를 사용해야한다. 1)먼저 변수 a 선언 //아무 이름이여도 상관없음 단 특스문자로 시작하면 안됨. 2)printf(" >#include<stdio

C++ 표준입출력 STDOUT 비활성화
프로그램을 개발하다보면 printf, cout 등의 표준입출력을 이용해 메세지를 출력하거나 값을 확인하는 경우가 많다. 또 외부 라이브러리를 사용하는 경우에도 메세지가 출력되는 경우가 많은데, 출력 소스코드를 하나하나 찾아서 주석처리하거나, 라이브러리를 새로 빌드하는 것은 매우 번거롭다. 이런 경우 표준입출력을 비활성화 시키는 간단한 코드가 있다. 매우 잘 동작한다. 간혹 외부 라이브러리에서 libnamelogger 형식으로 메세지 로깅 기능이 직접 구현된 경우에는, 위 코드를 사용해도 로그 메세지가 출력되기 때문에, 이런 경우는 직접 수정해줘야 한다.