함수에서 fgets를 사용하여 C에서 입력을 얻으려고합니다. 코드가 제대로 표시되지만 do/while 루프에 대한 매개 변수를 따르지 않습니다 (외부 번호를 입력하면 입력 범위가 적절할 때까지 루프를 반복하는 것이 아니라 프로그램을 계속 진행합니다. 나는 그것으로 땜질을 시도하고, 나는 나의 문제점이 무엇인지 알 수 없다. 나는 그것이 문자로서의 입력을 정수로 취하는 것과 관련이있을 것이라고 생각한다. 하지만 int에 변수를 넣으려고했는데 도움이되지 않았습니다. 어떤 도움이라도 대단히 감사합니다!C에서 입력에 fgets 사용하기
{
char line[MAX_LINE];
int entry;
do
{
printf("Please enter %s(%d-%d) ", descriptionCPtr, low, high);
fgets(line, MAX_LINE, stdin);
entry = (int)line[0];
}
while(entry < low || entry > high);
return(entry);
}
기본 디버깅을 수행 했습니까? 디버거를 사용하거나'line'과'entry' 값을 출력하는 것과 같은 것입니까? 확실히 당신은 도움을 요청하기 전에 문제에 대해 더 많이 알 수 있습니다. – kaylum
예. 나는 진입 가치를 인쇄했고 나에게 "45"또는 "52"를 계속 제공한다. 그것이 어디에서오고 있는지, 줄은 나에게 119054520을 준다. – Polyphase29
글쎄, 왜 그 정보를 제공하지 않았고, while 루프가 아닌 그것에 대해 물어 보았다. 분명히'entry'는 여러분이 기대하는 것이 아니며 그것은 실패의 초기 지점입니다. 캐스팅이하는 일을 복습 해 보는 것이 좋습니다. 문자열을 'int'문자열로 변환 할 수 없습니다. 그런 다음 [atoi] (https://linux.die.net/man/3/atoi)를 찾으십시오. – kaylum