문자열과 정수 모두에 대한 입력을 받기 위해 Scanf () 사용

HARSHIT TIWARI

scanf()다음과 같이 다른 변수에 대해 사용자로부터 입력을받는 간단한 C 프로그램을 작성했습니다 .

#include <stdio.h>
int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n",a);
    printf("%d\n",b);
    return 0;
}

이에 대한 출력은 예상대로 완전히 정상적으로 제공됩니다.

input: 10 23
output: 10
        23

그러나 다음과 같이 문자열 배열에 대한 입력을 시도했습니다 (여기 char c[2]에 문자열 배열입니다).

#include <stdio.h>
int main(){
    int a, b;
    char c[2];
    scanf("%d %d %s", &a, &b, c);
    printf("%d\n",a);
    printf("%d\n",b);
    printf("%s\n",c);
    return 0;
}

이제 출력은 예상치 못한 것이 었습니다.

input: 10 23 AM
output: 10
        0
        AM

이 알 수있는 바와 같이, 여기서, 변수 인쇄 값이 존재한다는 b것으로 오는 0대신 예상 23. 문자열 배열에 대한 입력을 받으면 변수 값이 b어떻게 변경 됩니까?

누군가 내가 무엇을 잘못했는지 (물론 어리석은 실수) 알아낼 수 있습니까? 강조된 텍스트

Adrian Mole

귀하의 char c[2];변수는 2 문자열 보유 할만큼 충분히 큰 배열이 아닌 플러스 필요한 nul-terminator을 . 입력이 2 자 이하 라는 것을 알고 있는 경우로 변경하면 char c[3];충분합니다. 그러나 안전성을 높이기 위해 다음 scanf과 같은 형식 지정자를 사용하여 %2s(또는보다 일반적으로 해당 형식 지정자 char buff[n];의 값을 사용하는 것과 같은 배열의 경우) 호출에서 읽을 문자 수에 대한 제한을 포함 할 수 있습니다 n - 1.

현재로서는 정의되지 않은 동작있습니다. 여기에는 ( - 종결자가 b되어야하는 0으로) 주어진 값을 덮어 쓰는 것이 포함될 있습니다 nul.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

문자열에 대해 scanf에서 적절한 입력을받을 수 없습니다 (배열의 문자로)

분류에서Dev

문자열과 정수 입력을 모두 허용하는 계산기

분류에서Dev

스크립트에 대한 인수로 사용자 입력 받기

분류에서Dev

sscanf ()를 사용하여 if 문으로 명령을 수행하기 위해 특정 입력을 받습니까?

분류에서Dev

accessibilityRole을 사용하기 위해 가능한 모든 문자열을 입력 하시겠습니까?

분류에서Dev

최대 값과 링크 된리스트에서 최소값하지만 입력 목록을 찾기 위해 자바 기록 두 방법의 최소 및 최대 사용 정수 배열

분류에서Dev

사용자로부터 입력을받는 프로그램을 만들고 모든 특정 입력에 대해 특정 출력을 얻습니다.

분류에서Dev

도형을 채우기 위해 행, 열 및 문자에 대한 입력을 사용하여 도형을 만드는 문제

분류에서Dev

사용자 입력에 대한 SQL 삽입을 방지하기위한 Prepare 문에 대한 올바른 순서

분류에서Dev

scanf n 번을 사용하여 입력 된 문자를 인쇄하기위한 For-loop 로직

분류에서Dev

입력에 대해 LASSO 정규화를 수행하기 위해 심층 신경망을 사용합니까?

분류에서Dev

정규식을 사용하여 가능한 여러 문자열에 대한 하위 문자열 가져 오기

분류에서Dev

각 사용자에 대해 모든 PHP 파일의 문자열을 교체하기위한 쉘 스크립트

분류에서Dev

TypeScript-클래스 속성에 대해 기본값과 사용 가능한 값을 모두 설정합니다.

분류에서Dev

로그인 콘솔 응용 프로그램에 대한 유효성 검사 방법을 사용하기 위해 사용자 입력을 받으려면 어떻게해야합니까?

분류에서Dev

PostgreSQL-뷰에 추가 열을 생성하기 위해 함수에 대한 입력으로 합계 별 그룹 사용

분류에서Dev

makefile을 사용하여 ac 코드 실행을위한 scanf 입력 문자열 제공

분류에서Dev

Keras 모델-사용자 지정 손실 함수에서 입력 받기

분류에서Dev

사용자 정의 함수를위한 배열 입력에 대한 스칼라 입력 일반화

분류에서Dev

행과 열을 사용하여 값을 찾기 위해 Excel에 대한 수식을 만듭니다.

분류에서Dev

std :: string을 통해 반환 된 문자열을 반환하기 위해 malloc 사용과 관련하여 valgrind에 의해 식별 된 메모리 누수

분류에서Dev

중복을 찾기 위해 awk에 대한 배열의 입력

분류에서Dev

통화 입력을 위해 값 대신 ngModel을 사용자 정의 Angular 지시문에 바인딩

분류에서Dev

벡터 크기에 대한 사용자 입력을 받아들이는 방법은 무엇입니까?

분류에서Dev

배열에 대한 사용자 지정 정렬을위한 Typescript의 비교기

분류에서Dev

Powershell, 컴퓨터 이름에 대한 사용자 입력을 받고 해당 컴퓨터 BIOS 정보, OS 정보 및 디스크 정보 표시

분류에서Dev

GNU Guile에서 사용자 입력을 얻기 위해 문자열을 읽는 방법은 무엇입니까?

분류에서Dev

프로그램을로드하기 위해 사용자 입력 받기

분류에서Dev

CUPS 사용자에 대한 정보를 얻기 위해 어떤 명령을 사용합니까?

Related 관련 기사

  1. 1

    문자열에 대해 scanf에서 적절한 입력을받을 수 없습니다 (배열의 문자로)

  2. 2

    문자열과 정수 입력을 모두 허용하는 계산기

  3. 3

    스크립트에 대한 인수로 사용자 입력 받기

  4. 4

    sscanf ()를 사용하여 if 문으로 명령을 수행하기 위해 특정 입력을 받습니까?

  5. 5

    accessibilityRole을 사용하기 위해 가능한 모든 문자열을 입력 하시겠습니까?

  6. 6

    최대 값과 링크 된리스트에서 최소값하지만 입력 목록을 찾기 위해 자바 기록 두 방법의 최소 및 최대 사용 정수 배열

  7. 7

    사용자로부터 입력을받는 프로그램을 만들고 모든 특정 입력에 대해 특정 출력을 얻습니다.

  8. 8

    도형을 채우기 위해 행, 열 및 문자에 대한 입력을 사용하여 도형을 만드는 문제

  9. 9

    사용자 입력에 대한 SQL 삽입을 방지하기위한 Prepare 문에 대한 올바른 순서

  10. 10

    scanf n 번을 사용하여 입력 된 문자를 인쇄하기위한 For-loop 로직

  11. 11

    입력에 대해 LASSO 정규화를 수행하기 위해 심층 신경망을 사용합니까?

  12. 12

    정규식을 사용하여 가능한 여러 문자열에 대한 하위 문자열 가져 오기

  13. 13

    각 사용자에 대해 모든 PHP 파일의 문자열을 교체하기위한 쉘 스크립트

  14. 14

    TypeScript-클래스 속성에 대해 기본값과 사용 가능한 값을 모두 설정합니다.

  15. 15

    로그인 콘솔 응용 프로그램에 대한 유효성 검사 방법을 사용하기 위해 사용자 입력을 받으려면 어떻게해야합니까?

  16. 16

    PostgreSQL-뷰에 추가 열을 생성하기 위해 함수에 대한 입력으로 합계 별 그룹 사용

  17. 17

    makefile을 사용하여 ac 코드 실행을위한 scanf 입력 문자열 제공

  18. 18

    Keras 모델-사용자 지정 손실 함수에서 입력 받기

  19. 19

    사용자 정의 함수를위한 배열 입력에 대한 스칼라 입력 일반화

  20. 20

    행과 열을 사용하여 값을 찾기 위해 Excel에 대한 수식을 만듭니다.

  21. 21

    std :: string을 통해 반환 된 문자열을 반환하기 위해 malloc 사용과 관련하여 valgrind에 의해 식별 된 메모리 누수

  22. 22

    중복을 찾기 위해 awk에 대한 배열의 입력

  23. 23

    통화 입력을 위해 값 대신 ngModel을 사용자 정의 Angular 지시문에 바인딩

  24. 24

    벡터 크기에 대한 사용자 입력을 받아들이는 방법은 무엇입니까?

  25. 25

    배열에 대한 사용자 지정 정렬을위한 Typescript의 비교기

  26. 26

    Powershell, 컴퓨터 이름에 대한 사용자 입력을 받고 해당 컴퓨터 BIOS 정보, OS 정보 및 디스크 정보 표시

  27. 27

    GNU Guile에서 사용자 입력을 얻기 위해 문자열을 읽는 방법은 무엇입니까?

  28. 28

    프로그램을로드하기 위해 사용자 입력 받기

  29. 29

    CUPS 사용자에 대한 정보를 얻기 위해 어떤 명령을 사용합니까?

뜨겁다태그

보관