>  기사  >  백엔드 개발  >  출력하는 동안 입력을 어떻게 받나요?

출력하는 동안 입력을 어떻게 받나요?

WBOY
WBOY앞으로
2024-02-09 12:30:19634검색

출력하는 동안 입력을 어떻게 받나요?

PHP 편집기 Apple은 오늘 여러분에게 일반적인 질문을 소개할 것입니다. PHP에서 사용자 입력을 받아야 할 때 어떻게 출력해야 합니까? 사용자 입력을 얻는 것은 대화형 프로그램 작성에 있어서 중요한 부분이므로 올바른 방법을 익히는 것이 중요합니다. PHP에서는 `fgets()` 함수를 사용하여 표준 입력에서 사용자 입력 한 줄을 읽거나 `fgetc()` 함수를 사용하여 표준 입력에서 읽는 등 일부 내장 함수를 사용하여 사용자 입력을 얻을 수 있습니다. 표준 입력 문자를 가져옵니다. 물론 `$_GET` 또는 `$_POST` 슈퍼전역 변수를 사용하여 사용자가 양식을 통해 제출한 데이터를 얻을 수도 있습니다. 어떤 방법을 사용하든 프로그램의 보안과 안정성을 보장하려면 사용자 입력에 대한 필수 유효성 검사 및 필터링에 주의를 기울여야 합니다. 위의 소개가 모든 사람에게 도움이 되기를 바랍니다!

질문 내용

제가 구현하고 싶은 것은 많은 정보(예: 0부터 1000000000000까지의 숫자)를 콘솔에 기록하고 콘솔에 명령을 입력하여 실행을 중지할 수 있는 일종의 애플리케이션입니다. (예: "중지").

고루틴을 활용하자는 아이디어가 떠올랐는데, 입력 필드가 출력으로 바뀌어서 명령어를 입력할 수 없습니다.

내 코드는 다음과 같습니다.

으아악

그리고 내가 얻은 결과. 문자는 내가 입력하려는 입력이고 숫자는 앱의 출력입니다

my go 애플리케이션에서 적절한 입력/출력을 수행하는 방법에 대한 제안 사항이 있나요?

해결 방법

입력 필드가 출력으로 변경되어 명령을 입력할 수 없습니다

일반적으로 명령을 입력할 수 있습니다. 입력하면 콘솔에 에코됩니다. 이는 콘솔에 출력되는 다른 모든 것과 결합되어 사용자를 혼란스럽게 할 수 있지만 컴퓨터는 그렇지 않습니다.

이것이 실제로 운영 체제와 일치한다고 가정하면 프로그램은 정상적으로 실행됩니다.

으아악

내 OS에는 없습니다. r。更便携的方法是使用 strings.trimspace 모든 공백을 제거하세요.

으아악

이 변경으로 인해 코드가 저에게 효과적입니다. 말씀하신 대로 출력과 입력이 화면에 삽입되지만 여전히 stop를 입력하고 프로그램을 종료할 수 있습니다.

my go 애플리케이션에서 적절한 입력/출력을 수행하는 방법에 대한 제안 사항이 있나요?

실제 터미널 프로그램은 거의 대화형이 아닙니다. 대신 명령줄 인수와 환경 변수는 호출 시 구성을 제공합니다. 쉘 리디렉션은 일반적으로 프로그램의 긴 출력을 보존(파일) 또는 페이지(예: |less)하는 데 사용됩니다.

프로그램이 사용자에게 메시지를 표시하고 데이터를 수집하는 대화형 터미널 모델을 사용하는 학술 프로그래밍을 많이 볼 수 있지만 실제로는 매우 드물고 현명하지 못한 합병증이 발생하는 경우가 많습니다. 표준 입력은 일반적으로 사용자 명령(예: 조작하거나 필터링할 데이터)보다는 계산에 필요한 데이터 입력을 제공하는 데 사용됩니다.

@tinkerer가 제안한 것처럼 신호는 이미 프로그램을 종료하는 데 사용될 수 있습니다(자세한 내용은 OS에 따라 다름). 따라서 터미널 응용 프로그램이 프로그램을 종료하기 위해 삽입되는 표준 입력 및 출력의 시각적 표현을 처리하는 방법에 대해 걱정할 필요가 없습니다. posix 환경에는 다른 많은 신호가 있으며 그 중 일부는 전적으로 사용자에게 공개되며 어떤 목적으로도 사용될 수 있습니다.

런타임에 더 복잡한 사용자 입력이 필요하면 프로그램은 일반적으로 소켓에서 명령을 수신합니다. 이러한 프로그램의 경우 단순성과 접근성으로 인해 http 서비스를 제공하는 웹 인터페이스가 점점 더 보편화되고 있습니다.

위 내용은 출력하는 동안 입력을 어떻게 받나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제