여러 입력을 얻기 위해 fgets 및 strtok를 사용하는 방법은 무엇입니까?

프로그래밍 Noob

사용 fgets()strtok()입력 수신 및 그에 따라 분할하는 데 문제가 있습니다.

입력 1-9를받는 주 메뉴가 있고 모든 입력이 다른 기능으로 연결된다고 가정합니다. 모든 함수에 대해 if 문과 break 문으로 그렇게했습니다. 이제 문자열, 공백, 정수 2 개를받는 또 다른 명령이 있다고 가정 해 봅시다. 메뉴에 어떻게 쓸까요?

그것은 메뉴에서 언제든지 개별 int (1-9) 만 읽을 수 있으며 let say "start 5,9,forward"또는 "start ,4,2,backwards"해당 메뉴를 읽을 수도 있습니다. "시작"이 입력되고 있으면 계속 진행하지만 시작 후 공백 입력을 읽고 2 개의 정수와 마지막을 읽도록 만드는 방법을 모르겠습니다. 끈.

내 질문이 약간 혼란 스럽지만 한 줄에 여러 입력을 받고 해당 입력 변수를 조작 할 수 있는지 예를 알고 싶습니다.

ddz

fgets사용 strtok:

@Cool Guy가 말한 것과 거의 같습니다.

...
fgets(buff, sizeof buff, stdin);
char a[25], d[25];
int b, c;
char *p = strtok(buff, ", "); //this will cut the input at an occurrence of `,` or `' '`, whatever happens first. At this point you would have the string "start" pointed by `p`.
strcpy(a, p);
p = strtok(NULL, ", ");
if(p) {
    b = atoi(p);
    if(b < 0 || b > 9) {
        //input error
    }
}
p = ...

나머지는 유사합니다.

scanf 솔루션 사용 :

scanf를 사용하여 입력을 읽을 수 있습니다 (예, 강력한 기능입니다).

scanf(" %N[^,' '] ,%1d%*[^,' '] ,%1d , %N[^\n]", a, &b, &c, d);

" %N[^,' ']"첫 번째 ,또는 ' '(공백)에 도달 할 때까지 입력을 읽 습니다. 또한 N을 a-1 의 크기로 바꾸십시오 .

%1d%*[^,' ']한 자리의 정수를 읽고 a ,를 찾아서 저장할 때까지 나머지 입력을 버립니다 b.

%N[^\n]나머지 줄을 읽고 d. N을 d-1 의 크기로 바꿉니다 .

scanf와 함께 사용할 수있는 많은 트릭이 있습니다. 이 경우 모든 공백은 scanf 형식 내에서 중요합니다. 또한 사용자가 잘못된 입력 형식을 입력하는 경우를 처리하지 않지만 가능합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

상속을 사용하여 모델을 바인딩하기 위해 뷰 및 컨트롤러 메서드를 설정하는 방법은 무엇입니까?

분류에서Dev

타사 및 경로를 동시에 사용하기 위해 여러 RewriteRules를 사용하는 방법은 무엇입니까?

분류에서Dev

타사 및 경로를 동시에 사용하기 위해 여러 RewriteRules를 사용하는 방법은 무엇입니까?

분류에서Dev

버전을 비교하기 위해 strtok를 올바르게 사용하는 방법은 무엇입니까?

분류에서Dev

사용자 정의 Vuetify 입력을 위해 블러 및 입력 키업 이벤트를 처리하는 방법은 무엇입니까?

분류에서Dev

maxResults 범위를 벗어난 videoId 및 playlistId를 사용하여 playlistItem을 얻는 방법은 무엇입니까?

분류에서Dev

키 누르기 기능을 사용하기 위해 여러 입력을 얻는 방법은 무엇입니까? 자바 스크립트 HTML

분류에서Dev

다음 출력을 얻기 위해 UIDatePicker를 사용자 정의하는 방법은 무엇입니까?

분류에서Dev

OpenCV 및 Python을 사용하여 변수를 변경하기 위해 mouseclick을 사용하는 방법은 무엇입니까?

분류에서Dev

2 개의 변수를 얻기 위해 여러 줄로 CSV를 반복하는 방법은 무엇입니까?

분류에서Dev

여러 단어를 찾기 위해 쿼리에서 LIKE를 사용하는 방법은 무엇입니까?

분류에서Dev

Date () 및 DatePipe () 만 사용하여 Angular9에서 날짜 범위를 얻는 방법은 무엇입니까?

분류에서Dev

UserId 및 UserName 값을 가져 오기 위해 CreateUserWizard를 사용자 지정하는 방법은 무엇입니까?

분류에서Dev

이중 입력 CNN 모델을 위해 ImageDataGenerator를 사용하여 빌드 된 데이터 세트의 레이블을 얻는 방법은 무엇입니까?

분류에서Dev

strtok를 사용하여 토큰 내에서 토큰을 얻는 방법은 무엇입니까?

분류에서Dev

하위 쿼리에서 여러 합계 및 그룹화를 사용하는 방법은 무엇입니까?

분류에서Dev

더 많은 입력을 얻기 위해 python "goto"를 이전 줄로 만드는 방법은 무엇입니까?

분류에서Dev

Opencv에서 Hausdorff Distance를 찾기 위해 Shape Distance 및 Common Interface를 사용하는 방법은 무엇입니까?

분류에서Dev

LINQ를 사용하여 NOT Equal 기능을 얻는 방법은 무엇입니까?

분류에서Dev

최신 버전을 사용하기 위해 Java 가져 오기를 얻는 방법은 무엇입니까?

분류에서Dev

mysql을 사용하여 전체 및 전체 하위 집합을 얻는 방법은 무엇입니까?

분류에서Dev

찾기를 사용하여 해시 배열에서 해시를 얻는 방법은 무엇입니까?

분류에서Dev

Dejavu 글꼴을 사용하기 위해 Jdk 8 Zulu를 여는 방법은 무엇입니까?

분류에서Dev

배치를 사용하여 접두사 및 임의 접미사에서 입력을 얻는 방법은 무엇입니까?

분류에서Dev

SPNEGO 및 CAS를 사용하여 LDAP 사용자 속성을 얻는 방법은 무엇입니까?

분류에서Dev

사용자 입력을 기반으로 PHP 및 AJAX를 사용하여 XML에서 데이터를 추출하는 방법은 무엇입니까?

분류에서Dev

SQL에서 여러 열 값을 업데이트하기 위해 하위 쿼리를 사용하는 방법은 무엇입니까?

분류에서Dev

원하는 출력을 얻기 위해 프로 시저를 작성하는 방법은 무엇입니까?

분류에서Dev

Selenium 및 Python 요청을 사용하여 프로그래밍 방식으로 유효한 응답을 얻기 위해 ReCaptcha V2의 32 비트 데이터 사이트 키를 식별하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    상속을 사용하여 모델을 바인딩하기 위해 뷰 및 컨트롤러 메서드를 설정하는 방법은 무엇입니까?

  2. 2

    타사 및 경로를 동시에 사용하기 위해 여러 RewriteRules를 사용하는 방법은 무엇입니까?

  3. 3

    타사 및 경로를 동시에 사용하기 위해 여러 RewriteRules를 사용하는 방법은 무엇입니까?

  4. 4

    버전을 비교하기 위해 strtok를 올바르게 사용하는 방법은 무엇입니까?

  5. 5

    사용자 정의 Vuetify 입력을 위해 블러 및 입력 키업 이벤트를 처리하는 방법은 무엇입니까?

  6. 6

    maxResults 범위를 벗어난 videoId 및 playlistId를 사용하여 playlistItem을 얻는 방법은 무엇입니까?

  7. 7

    키 누르기 기능을 사용하기 위해 여러 입력을 얻는 방법은 무엇입니까? 자바 스크립트 HTML

  8. 8

    다음 출력을 얻기 위해 UIDatePicker를 사용자 정의하는 방법은 무엇입니까?

  9. 9

    OpenCV 및 Python을 사용하여 변수를 변경하기 위해 mouseclick을 사용하는 방법은 무엇입니까?

  10. 10

    2 개의 변수를 얻기 위해 여러 줄로 CSV를 반복하는 방법은 무엇입니까?

  11. 11

    여러 단어를 찾기 위해 쿼리에서 LIKE를 사용하는 방법은 무엇입니까?

  12. 12

    Date () 및 DatePipe () 만 사용하여 Angular9에서 날짜 범위를 얻는 방법은 무엇입니까?

  13. 13

    UserId 및 UserName 값을 가져 오기 위해 CreateUserWizard를 사용자 지정하는 방법은 무엇입니까?

  14. 14

    이중 입력 CNN 모델을 위해 ImageDataGenerator를 사용하여 빌드 된 데이터 세트의 레이블을 얻는 방법은 무엇입니까?

  15. 15

    strtok를 사용하여 토큰 내에서 토큰을 얻는 방법은 무엇입니까?

  16. 16

    하위 쿼리에서 여러 합계 및 그룹화를 사용하는 방법은 무엇입니까?

  17. 17

    더 많은 입력을 얻기 위해 python "goto"를 이전 줄로 만드는 방법은 무엇입니까?

  18. 18

    Opencv에서 Hausdorff Distance를 찾기 위해 Shape Distance 및 Common Interface를 사용하는 방법은 무엇입니까?

  19. 19

    LINQ를 사용하여 NOT Equal 기능을 얻는 방법은 무엇입니까?

  20. 20

    최신 버전을 사용하기 위해 Java 가져 오기를 얻는 방법은 무엇입니까?

  21. 21

    mysql을 사용하여 전체 및 전체 하위 집합을 얻는 방법은 무엇입니까?

  22. 22

    찾기를 사용하여 해시 배열에서 해시를 얻는 방법은 무엇입니까?

  23. 23

    Dejavu 글꼴을 사용하기 위해 Jdk 8 Zulu를 여는 방법은 무엇입니까?

  24. 24

    배치를 사용하여 접두사 및 임의 접미사에서 입력을 얻는 방법은 무엇입니까?

  25. 25

    SPNEGO 및 CAS를 사용하여 LDAP 사용자 속성을 얻는 방법은 무엇입니까?

  26. 26

    사용자 입력을 기반으로 PHP 및 AJAX를 사용하여 XML에서 데이터를 추출하는 방법은 무엇입니까?

  27. 27

    SQL에서 여러 열 값을 업데이트하기 위해 하위 쿼리를 사용하는 방법은 무엇입니까?

  28. 28

    원하는 출력을 얻기 위해 프로 시저를 작성하는 방법은 무엇입니까?

  29. 29

    Selenium 및 Python 요청을 사용하여 프로그래밍 방식으로 유효한 응답을 얻기 위해 ReCaptcha V2의 32 비트 데이터 사이트 키를 식별하는 방법은 무엇입니까?

뜨겁다태그

보관