programing

scanf("%*s") 및 scanf("%*d") 형식의 식별자란 무엇입니까?

goodsources 2022. 8. 9. 22:59
반응형

scanf("%*s") 및 scanf("%*d") 형식의 식별자란 무엇입니까?

이 형식의 실제 용도는 무엇입니까?"%*"스캔으로이 형식이 존재한다면, 그 이면에 어떤 목적이 있을 것입니다.다음 프로그램은 이상한 출력을 보여줍니다.

#include<stdio.h>
int main()
{
        int i;
        char str[1024];

        printf("Enter text: ");
        scanf("%*s", &str);
        printf("%s\n", str);

        printf("Enter interger: ");
        scanf("%*d", &i);
        printf("%d\n", i);
        return 0;
}

출력:

manav@workstation:~$ gcc -Wall -pedantic d.c
d.c: In function ‘main’:
d.c:8: warning: too many arguments for format
d.c:12: warning: too many arguments for format
manav@manav-workstation:~$ ./a.out
Enter text: manav
D
Enter interger: 12345
372
manav@workstation:~$

printf의 경우 *를 사용하여 추가 파라미터를 통해 최소 필드 폭을 지정할 수 있습니다.printf("%*d", 4, 100);필드 너비를 4로 지정합니다.필드 폭 4는 숫자 인쇄에 4자 미만이 필요한 경우 필드 폭이 채워질 때까지 공백 문자가 인쇄됨을 의미합니다.숫자가 지정된 필드 폭보다 더 많은 공간을 차지하는 경우 숫자는 잘라내지 않고 그대로 인쇄됩니다.

위해서scanf*는 필드를 읽지만 무시함을 나타냅니다.이러한 경우, 예를 들어 다음과 같습니다. scanf("%*d %d", &i)입력 "12 34"는 12를 무시하고 34를 정수 i로 읽습니다.

스타는 사양에서 읽은 텍스트를 무시하라는 플래그 문자입니다.glibc 매뉴얼에서 Qoute 하려면 다음 절차를 수행합니다.

이 사양에 대해 읽은 텍스트를 무시하도록 지시하는 옵션 플래그 문자 '*'입니다.scanf는 이 플래그를 사용하는 변환 사양을 찾으면 변환 사양의 나머지 부분에서 지시한 대로 입력을 읽지만 이 입력을 폐기하고 포인터 인수를 사용하지 않으며 성공한 할당 수를 늘리지 않습니다.

이 기능은 다음과 같이 사양 문자열에 여러 요소가 포함되어 있는 경우에 유용합니다. scanf("%d %*s %d", &i, &j)를 위해"12 test 34"- 여기i와 j는 정수이고 나머지는 무시합니다.

*변수를 입력하지 않고 입력을 건너뛰기 위해 사용합니다.그렇게scanf("%*d %d", &i);두 개의 정수를 읽고 두 번째 정수를 넣는다.i.

코드로 출력된 값은 초기화되지 않은 값일 뿐입니다.ivariable - scanf 콜에서 변경되지 않았습니다.

여기를 참조해 주세요.

선택적 시작 별표는 데이터가 stdin에서 검색되지만 무시됨을 나타냅니다. 즉, 해당 인수에 저장되지 않습니다.

scanf("%*d",&a) *는 입력을 건너뜁니다.입력을 읽으려면 추가 정보를 사용해야 합니다."%d"scanf. 예:

 int a=1,b=2,c=3;
    scanf("%d %*d %d",&a,&b,&c); //input is given as: 10 20 30

O/P:

a=10 b=30 and c=3;  // 20 is skipped

다른 것을 사용하는 경우%d예:scanf("%d %*d %d %d",&a,&b,&c); //input is given as: 10 20 30 40a=10 b=30 c=40이다.

사용하시는 경우","scanf에서는 다음 시간 이후 값이 취득되지 않습니다.%*d즉,scanf("%d %*d,%d" &a,&b,&c)// 10 20 30O/p: a=10b=2c=3c로 한다.

언급URL : https://stackoverflow.com/questions/2155518/what-are-scanfs-and-scanfd-format-identifiers

반응형