글자가 10 자라고 가정합니다. 프롬프트 EX를 건너 뛰어도 9 문자를 입력하면 알 수 있습니다.더 많은 문자를 입력하면 메시지가 건너 뜁니다.
Enter a p value:
123456789
Enter a q value:
Enter a k value:
하지만 8 이하에 넣으면 프로그램이 의도대로, 일반적으로 그것을 받아 들일 것조차 사용자 입력 문자 또는 특수 문자의 경우.
내 코드 : 개행, EOF, 또는 버퍼의 크기 중 하나를 명중 할 때까지이 할 수있는
#include <stdio.h>
#include <math.h>
#include <limits.h>
#include <ctype.h>
int main()
{
char pbuffer[10], qbuffer[10], kbuffer[10];
int p=0, q=0, k=0;
int r, i, Q, c, count, sum;
char a[3];
a[0]='y';
while(a[0]=='y' || a[0]=='Y')
{
printf("Enter a p value: \n");
fgets(pbuffer, sizeof(pbuffer), stdin);
p = strtol(pbuffer, (char **)NULL, 10);
printf("Enter a q value: \n");
fgets(qbuffer, sizeof(qbuffer), stdin);
q = strtol(qbuffer, (char **)NULL, 10);
printf("Enter a k value: \n");
fgets(kbuffer, sizeof(kbuffer), stdin);
k = strtol(kbuffer, (char **)NULL, 10);
while(p<q+1)
{
Q=p;
sum=0;
count=0;
while(Q>0)
{
count++;
r = Q%10;
sum = sum + pow(r,k);
Q = Q/10;
}
if (p == sum && i>1 && count==k)
{
printf("%d\n",p);
}
p++;
a[0]='z';
}
while((a[0]!='y') && (a[0]!='Y') && (a[0]!='n') && (a[0]!='N'))
{
printf("Would you like to run again? (y/n) ");
fgets(a, sizeof(a), stdin);
}
}
return 0;
}
[scanf ("% d", \ [... \])가 '\ n'을 사용하지 않는 이유는 무엇입니까? scanf ("% c")는 어떻게합니까?] (http://stackoverflow.com/questions/13275417/why-scanfd-does-not-consume-n-while-scanfc-does) –