🙇‍♀️9


🪐입출력 버퍼

ABC 라고 입력 -> 버퍼 buffer -> ABC 출력

입력할 때마다 한 글자 씩 버퍼로 이동 -> 버퍼에 담긴 내용이 통째로 전달

char c;

while ((c = getchar()) != '.')
{
	putchar(c);
}

문자를 입력하면 바로 출력하는게 아니라 모았다가 한꺼번에 출력함


🪐파일의 끝 End Of File

운영체제가 입력이 끝났다는 것을 알려줌.

  • ctrl + z 후 엔터하면 콘솔 닫음
  • ctrl + c 는 바로 콘솔 닫음


🪐입출력 방향 재지정

cmd에서 실행파일을 실행할 때 HJM_7.exe > output.txt를 입력하면 메모장으로 출력 결과가 나온다. output은 이름이므로 바꿔도 됨.

메모장에 입력된 것을 실행파일로 쓸려면 HJM_7.exe < input.txt을 하면 된다.

HJM_7.exe < input.txt > output.txt를 하면 입력받은 실행결과를 다시 메모장에 옮긴다.

HJM_7.exe >> output.txt를 하면 파일이 덧붙여진다.

copy HJM_7.exe test.exe를 한 후 test.exe | HJM_7.exe를하면 복사한 값이 뒤에 적용된다


🪐메모

while (getchar() != '\n')
    continue;

사용자의 첫번째 입력만 인식하게된다. 정확히는 버퍼에 들어가는 듯?

while ((c = getchar()) != '\n')
    putchar(c);

버퍼에 들어간 것들을 모두 출력함과 동시에 버퍼를 비워준다.


🪐숫자와 문자를 섞어서 입력받기

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS

#include <float.h>

void display(char cr, int lines, int width);

int main()
{
	char c;
	int rows, cols;

	//while (1)
	//{
	//	scanf("%c %d %d", &c, &rows, &cols);
	//	while (getchar() != '\n') continue;
	//	display(c, rows, cols);
	//	if (c == '\n')
	//		break;
	//}

	printf("Input one character and two integers:\n");
	while ((c = getchar()) != '\n')
	{
		scanf("%d %d", &rows, &cols);
		while (getchar() != '\n') continue;

		display(c, rows, cols);
		printf("Input another character and two integers:\n");
		printf("Press Enter to quit.\n");
	}

	return 0;
}

void display(char cr, int lines, int width)
{
	for (int i = 0; i < lines; i++)
	{
		for (int j = 0; j < width; j++)
		{
			printf("%c", cr);
		}
		printf("\n");
	}
}


🪐입력 확인하기

#include <stdio.h>

int main()
{
	printf("Please input an integer and press enter.\n");

	long input;
	char c;

	while (scanf("%ld", &input) != 1)
	{
		printf("Your input - ");

		while ((c = getchar()) != '\n')
			putchar(c);

		printf(" - is not an integer. Please try again.\n");
	}

	printf("Your input %ld is an integer. Thank you.\n", input);

	return 0;
}

위의 예시에서 1에서 100사이 숫자를 입력받을 때까지 반복하도록 만들기

#include <stdio.h>

long get_long(void);

int main()
{
	long number;

	while (1)
	{
		printf("Please input an integer between 1 and 100.\n");

		number = get_long();

		if (number > 1 && number < 100)
		{
			printf("OK. Thank you.\n");
			break;
		}
		else
			printf("Wrong input. Please try again.\n");
	}

	printf("Your input %d is between 1 and 100. Thank you.\n", number);

	return 0;
}

long get_long(void)
{
	printf("Please input an integer and press enter.\n");

	long input;
	char c;

	while (scanf("%ld", &input) != 1)
	{
		printf("Your input - ");

		while ((c = getchar()) != '\n')
			putchar(c);

		printf(" - is not an integer. Please try again.\n");
	}

	printf("Your input %ld is an integer. Thank you.\n", input);

	return input;
}


🪐텍스트 파일 읽기

#include <stdio.h>
#include <stdlib.h> // exit()

int main()
{
	int c;
	FILE* file = NULL;
	char file_name[] = "my_file.txt"; // TODO : use scanf(...)

	file = fopen(file_name, "r"); // read or write
	if (file == NULL)
	{
		printf("Failed to open file.\n");
		exit(1);
	}

	while ((c = getc(file)) != EOF)
	{
		putchar(c);
	}
	fclose(file);
}

태그:

카테고리:

업데이트: