반응형

Visual Studio를 쓰다 보면 가끔 디버깅 하다가 프로그램을 잘못 종료 시켜서 다시 디버깅 하려고 하면 이렇게 오류를 띄우면서 프로그램이 실행이 되지 않을 때가 있다. 아니 난 많았다..

 

보통 이럴 땐 작업 관리자(Ctrl + Alt + Del)를 열어서 프로세스를 종료 시켜줬는데 작업 관리자 프로세스 탭에 안보일 때가 있다.

 

이럴 때 해결하는 방법을 써본다.

 

아주 간단하다.

 

윈도우키 + R로 실행창을 열어 cmd를 입력하여 명령 프롬프트를 실행시킨다.

 

TASKKILL /F /IM hello_world.exe

위 명령문을 입력 후 실행한다.

보통 프로그램명은 프로젝트명하고 같아서 상황에 맞게 바꿔서 입력해준다.

 

작업 관리자에 안보이던 녀석이 종료되었다.

 

다시 시도해 보면 오류가 뜨지 않는 것을 확인할 수 있다.

 

반응형
반응형

공부를 하다 보니 "cout은 느리다 printf를 써라", "cin은 느리다 scanf를 써라"라는 글을 보았다.

 

얼마나 느리다는거지?

 

궁금해서 바로 테스트 해보았다.

 

#include <stdio.h>
#include <iostream>
#include <time.h>

int main()
{
	using namespace std;

	char let = 'z';
	char str[5] = "abc";

	clock_t start_time = clock();

	for (int i = 1; i <= 50000; i++)
		printf("z %c abc %s\n", let, str);
		//cout << 'z' << let << "abc" << str << endl;

	printf("%dms\n", clock() - start_time);
	system("pause");

	return 0;
}

scanf와 cin의 속도 비교보다는 printf와 cout의 속도 비교가 비교적 쉬울 거 같아서 clock 함수 사용을 위해 time.h 헤더 선언을 하고 printf와 cout의 속도를 비교할 수 있는 코드를 짜봤다.

 

원리는 간단하다.

printf와 cout를 5만 번(ㅋㅋㅋㅋㅋ) 호출하는데 호출 전 시간과 5만 번의 반복문을 끝내고 난 뒤의 시간을 비교하는 것이다.

 



7초 조금 안되게 걸렸다.

바로 cout도 측정을 해본다.

공평성(?)을 위해 따로따로 실행하였다.

 



14초가 걸렸다.

 

5만 번을 돌리기 전에 간단하게 100번만 돌려봤는데 각각 30ms 60ms 두 배 차이가 났는데 5만번을 돌렸을 때에도 2배 차이가 난다.

 

결론은 확실히 cout이 느리다.

 

반응형
반응형

https://gun-ny.tistory.com/17

시작하기에 앞서 문자열로 예를 든 것일 뿐 조건만 맞는다면 다른 자료형도 출력이 가능하다.

그리고 scanf_s 같이 표준 입력 함수 이름 뒤에 _s가 붙은 이름들의 배경은 위의 글을 참고하면 된다.

 

입력 함수 및 객체 목차

문자 및 문자열 입력 함수 및 객체(띄어쓰기 입력 불가)

  • scanf
  • fscanf
  • cin(C++)

 

문자열 입력 함수(띄어쓰기 입력 가능)

  • gets
  • fgets

 

문자 입력 함수

  • getchar
  • getc
  • getch(conio.h 선언 필요)
  • fgetchar
  • fgetc

 

입력 함수 및 객체 요약

출력 함수 때보다 더 간단히 요약하면

띄어쓰기가 포함된 문자열을 입력할 때에는 gets, fgets

아니면 인수를 여러개 받을 수 있는 scanf, fscanf, cin을 사용하자

 

문자를 입력받을 경우

getch 이외 다 비슷하게 기능을 수행하지만 대중적(?)으로 사용하는 getchar을 쓰자

getch는 conio.h 헤더 포함을 선언해 주고 키를 누르는 순간 반응하길 원할 때 쓰자

 

스트림을 지정 해야할 경우

문자열의 경우 fscanf, fgets

문자의 경우 getc, fgetc 중 하나를 사용하면 된다.

 

문자열의 경우 띄어쓰기가 없다면 scanf(fscanf) 띄어쓰기가 있다면 gets(fgets)

문자의 경우 getchar(fgetc), getch를 주로 사용한다고 생각하자( ()은 스트림 지정시)

cin도 많이 사용하나 출력 함수 설명 때와 마찬가지로 scanf에 비해 느리다.

 

 

 


 

 

문자 및 문자열 입력 함수 및 객체(띄어쓰기 입력 불가)

특징

  • 문자와 문자열 입력 가능('a', "a", "abc")
  • 띄어쓰기 입력 불가

 


scanf

scanf 예제

	char ch;
	char let;
	char str[5];

	// 문자 변수, 문자열 변수 상관없이 섞어서 입력 가능
	// 인수(argument) 여러개 호출 가능
	scanf("%c %c", &ch, &let);
	scanf("%s", str);

	// 대입 불가
	//scanf('a', &let);
	//scanf("abc", str);

	printf("%c %c %s", ch, let, str);

scanf 출력


a b
abc
a b abc

 


fscanf

fscanf 예제(띄어쓰기 입력 시)

	char ch;
	char let;
	char str[5];

	// 문자 변수, 문자열 변수 상관없이 섞어서 입력 가능
	// 인수(argument) 여러개 호출 가능
	fscanf(stdin, "%c %c", &ch, &let);
	fscanf(stdin, "%s", str);

	// 대입 불가
	//scanf('a', let);
	//scanf("abc", string);

	printf("%c %c %s", ch, let, str);

fscanf 출력(띄어쓰기 입력 시)


a b
ab c
a b ab

 


cin

cin 예제

	using namespace std;

	char ch;
	char let;
	char str[5];

	// 문자 변수, 문자열 변수 상관없이 섞어서 입력 가능
	// 인수(argument) 여러개 호출 가능
	cin >> ch >> let >> str;

	printf("%c %c %s", ch, let, str);

cin 출력


a b abc
a b abc


 

 

 


 

 

문자열 입력 함수(띄어쓰기 입력 가능)

특징

  • 문자열만 입력 가능("a", "abc")
  • 띄어쓰기 입력 가능

 


gets

gets 예제

	char ch;
	char let;
	char str[5];

	// 문자 변수 입력 불가
	//gets(let);

	// 인수(argument) 1개로만 호출 가능
	//gets(ch, let, str);

	gets(str);

	printf("%s", str);

gets 출력


abc
abc

 


fgets

fgets 예제(띄어쓰기 입력 시)

	char ch;
	char let;
	char str[5];

	// 문자 변수 입력 불가
	//fgets(let, 1, stdin);

	// 인수(argument) 1개로만 호출 가능
	//fgets(ch, let, str, 5, stdin);

	fgets(str, 5, stdin);

	printf("%s", str);

fgets 출력(띄어쓰기 입력 시)


ab c
ab c

 

 

 


 

 

문자 입력 함수

특징

  • 문자만 입력 가능('a')

 


getchar

getchar 예제

	char ch = getchar();
	printf("%c", ch);

getchar 출력


a
a

 


getc

getc 예제

	char ch = getc(stdin);
	printf("%c", ch);

getc 출력


a
a

 


getch
(conio.h 선언 필요)
(입력시 바로 반응)
(a 한개만 출력)

getch 예제

	char ch = getch();
	printf("%c", ch);

getch 출력


a

 


fgetchar

fgetchar 예제

	char ch = fgetchar();
	printf("%c", ch);

fgetchar 출력


a
a

 


fgetc

fgetc 예제

	char ch = fgetc(stdin);
	printf("%c", ch);

fgetc 출력


a
a

 

반응형
반응형

시작하기에 앞서 문자열로 예를 든 것일 뿐 조건만 맞는다면 다른 자료형도 출력이 가능하다.

 

출력 함수 및 객체 목차

문자열 출력 함수

  • printf
  • puts
  • fprintf
  • fputs

 

문자 출력 함수

  • putchar
  • putc
  • fputchar
  • fputc

 

문자 및 문자열 출력 객체

  • cout(C++)

 

출력 함수 및 객체 요약

차이점으로 요약할 수 있을거 같다.

 

문자냐 문자열이냐

  • 문자열(printf, puts, fprintf, fputs)
  • 문자(putchar, putc, fputchar, fputc)
  • 문자 및 문자열(cout)

자동 개행(줄바꿈)이 되냐 안되냐

  • 자동 개행(puts)

출력할 변수가 1개냐 여러 개냐

  • 인수 여러개 호출 가능(printf, fprintf, cout)

스트림을 지정하냐 안 하냐(예를 들면 콘솔 출력이냐, 파일 출력이냐)

  • 지정(fprintf, fputs, fputchar, fputc, putc)

예를 4가지 들면

(문자열)을 (자동 개행) 안되게 (인수 여러개)로 콘솔 출력 할 것이다. -> printf

(문자열)을 (자동 개행) 안되게 (인수 여러개)로 (콘솔 스트림 지정)=콘솔 출력 할 것이다. -> fprintf

(문자)를 (자동 개행) 안되게 (인수 1개)로 (파일 스트림 지정)=파일 출력 할 것이다. -> putc, fputchar, fputc

(문자 및 문자열)을 (자동 개행) 안되게 (인수 여러개)로 콘솔 출력 할 것이다. -> cout

 

예를 들긴 했지만 printf와 fprintf를 제일 많이 사용한다.

cout도 많이 사용하나 printf에 비해 느린 편이다.

 

 

 


 

 

문자열 출력 함수

특징

  • 문자열 또는 문자열 변수만 출력 가능("abc")
  • 문자열 처리한 문자는 출력 가능("a")

 


printf

printf 예제

	char let = 'z';
	char str[5] = "abc";

	// 문자 출력 불가
	//printf('z');
	// 문자 변수 출력 불가
	//printf(let);

	// 문자열 처리한 문자는 출력 가능
	printf("z");

	printf("abc");
	printf(str);

	// 인수(argument) 여러개 호출 가능
	printf("abc%s%s%s", str, str, str);

printf 출력


zabcabcabcabcabcabc

 


puts

puts 예제

	char let = 'z';
	char str[5] = "abc";

	// 문자 출력 불가
	//puts('z');
	// 문자 변수 출력 불가
	//puts(let);

	// 문자열 처리한 문자는 출력 가능
	puts("z");

	puts("abc");
	puts(str);

	// 인수(argument) 1개로만 호출 가능
	//puts("abc%s", str);

puts 출력


z
abc
abc

 


fprintf

fprintf 예제

	char let = 'z';
	char str[5] = "abc";

	// 문자 출력 불가
	//printf('z');
	// 문자 변수 출력 불가
	//printf(let);

	// 문자열 처리한 문자는 출력 가능
	fprintf(stdout, "z");

	fprintf(stdout, "abc");
	fprintf(stdout, str);

	// 인수(argument) 여러개 호출 가능
	fprintf(stdout, "abc%s%s%s", str, str, str);

fprintf 출력


zabcabcabcabcabcabc

 


fputs

fputs 예제

	char let = 'z';
	char str[5] = "abc";

	// 문자 출력 불가
	//puts('z');
	// 문자 변수 출력 불가
	//puts(let);

	// 문자열 처리한 문자는 출력 가능
	fputs("z", stdout);

	fputs("abc", stdout);
	fputs(str, stdout);

	// 인수(argument) 1개로만 호출 가능
	//fputs("abc%s", str, stdout);

fputs 출력


zabcabc

 

 

 


 

 

문자 출력 함수

특징

  • 문자 또는 문자 변수만 출력 가능('a')

 


putchar

putchar 예제

	char let = 'z';
	char str[5] = "abc";

	putchar('z');
	putchar(let);

	// 문자열 출력 불가
	//putchar("abc");
	// 문자열 변수 출력 불가
	//putchar(str);

putchar 출력


zz

 


putc

putc 예제

	char let = 'z';
	char str[5] = "abc";

	putc('z', stdout);
	putc(let, stdout);
    
	// 문자열 출력 불가
	//putc("abc", stdout);
	// 문자열 변수 출력 불가
	//putc(str, stdout);

putc 출력


zz

 


fputchar

 

fputchar 예제

	char let = 'z';
	char str[5] = "abc";

	fputchar('z');
	fputchar(let);

	// 문자열 출력 불가
	//fputchar("abc");
	// 문자열 변수 출력 불가
	//fputchar(str);

fputchar 출력


zz

 


fputc

fputc 예제

	char let = 'z';
	char str[5] = "abc";

	fputc('z', stdout);
	fputc(let, stdout);

	// 문자열 출력 불가
	//fputc("abc", stdout);
	// 문자열 변수 출력 불가
	//fputc(str, stdout);

fputc 출력


zz

 

 

 


 

 

문자 및 문자열 출력 객체(C++)

특징

  • 문자, 문자열, 문자 변수, 문자열 변수 상관없이 섞어서 쓸 수 있다.('a', "a", "abc")
  • 출력 함수에 비해 느리다.

 


cout

cout 예제

	using namespace std;

	char let = 'z';
	char str[5] = "abc";

	cout << 'z' << let << "abc" << str;

cout 출력


zzabcabc

 

반응형

+ Recent posts