#include <stdio.h>
int main()
{
char anwser;
printf("진행하시겠습니까?(Y/N) : \n");
scanf_s("%c", &anwser, 1);
while (anwser != 'N')
{
printf("더 진행하시겠습니까?(Y/N) : \n");
scanf_s("%c", &anwser, 1);
}
return 0;
}
while문으로 내가 원하는 만큼 계속 반복해서 숫자를 입력하는 코드를 그냥 짜보려고 했음 과제도 아니고 실습예제도 아님 걍 생각나서 해봄
근데 자꾸 더 진행할 거냐고 묻는 거를 스킵하고 숫자만 입력받으려고 하는 거임;;
그래서 뭐가 문제인지 알아보려고 일단 숫자를 입력하는 걸 지우고 저렇게 진행하는지만 묻게 남겼는데 이러고 알게 된 게
while문이 2번씩 반복한다는 거임
그러니까 저걸 실행하면
진행하시겠습니까?(Y/N) :
Y
더 진행하시겠습니까?(Y/N) :
더 진행하시겠습니까?(Y/N) :
Y
더 진행하시겠습니까?(Y/N) :
더 진행하시겠습니까?(Y/N) :
Y
더 진행하시겠습니까?(Y/N) :
더 진행하시겠습니까?(Y/N) :
Y
이렇게 됨 그래서 지금 알고 싶은 건 왜 while문이 2번씩 반복하는지 그 이유랑, 1번씩만 하도록 고치는 방법임
while문을 이제 배운 것도 아니고 처음 이걸로 코드 짜보는 것도 아닌데 2번씩 반복된 적이 없었는데 이거 왜 이러는지 진짜 모르겠음 살려줘
%c, %s 같은 경우 scanf 함수의 동작이 엔터키('\n') 등 whitespace를 만나면 그 자리에서 스탑하는 방식임. 그러면 네 경우는 인풋 스트림에는 여전히 엔터키가 남아있는 거라서, 다음에 scanf 가 한 번 더 동작하면 그 엔터키를 answer 에 저장하는 거임
이건 2번 반복되는 것보단 덜 중요한 질문인데 포인터를 이용해서 계속 숫자를 입력받게 할 수 있나? 예를 들어서 int *pnumber;int number, i;pnumber=&number;for(i=0; i<10; i++){ printf("숫자 입력 : "); scanf_s("%d", (pnumber+4*i));}이렇게 하면 배열처럼 계속 입력받을 수 있는 거임?
아 폰으로 썼더니 이딴 식으로 나오네;;
ㅇㅇ %d는 동작 방식이 %c 랑 달라. 레퍼런스 사이트를 읽어보면 더 자세히 알 수 있음
https://en.cppreference.com/w/c/io/fscanf
%c 앞에 공백을 하나 넣어보셈 - dc App
아 정말 감사합니다
게이야 이런건 걍 지피티에 넣어라
아 그런 방법이 있었구나 감사합니다
나도 c 처음배울때 이것땜에 당황스러웟지