> 백엔드 개발 > C++ > 본문

C 언어에서 scanf_s 사용법

下次还敢
풀어 주다: 2024-04-30 00:33:17
원래의
436명이 탐색했습니다.

scanf_s는 버퍼 오버플로 공격을 방지하기 위해 형식이 지정된 데이터를 읽는 C 언어의 안전한 함수입니다. 구문은 scanf_s(format, ...)입니다. 사용 단계: 헤더 파일 stdio.h를 포함합니다. 변수 앞에 & 기호를 추가합니다. 형식 지정자가 데이터 유형과 일치하는지 확인하십시오. 오류를 감지하려면 반환 값을 확인하세요.

C 언어에서 scanf_s 사용법

C 언어에서 scanf_s 사용

scanf_s 함수는 표준 입력에서 형식화된 데이터를 읽기 위한 안전한 C 언어 버전입니다. 안전하지 않은 scanf 함수와 달리 scanf_s는 입력의 유효성을 검사하고 버퍼 오버플로 공격으로부터 보호합니다.

Syntax

<code class="c">int scanf_s(const char *format, ...);</code>
로그인 후 복사

Parameters

  • format: 읽을 데이터 유형을 지정하는 형식 지정자 문자열입니다. format:一个格式说明符字符串,指定要读取的数据类型。
  • ...:一个可变参数列表,提供要读取的数据的地址。

返回值

scanf_s 返回已成功读取的项目数。如果输入格式不正确或遇到错误,则返回 -1。

用法

要使用 scanf_s,请按照以下步骤操作:

  1. 包含 stdio.h 头文件。
  2. 在要读取数据的变量之前放置 & 符号。
  3. 确保格式说明符与要读取的数据类型匹配。
  4. 检查 scanf_s 的返回值以检测错误。

示例

<code class="c">#include <stdio.h>

int main()
{
    int age;
    char name[20];

    printf("输入你的年龄:");
    if (scanf_s("%d", &age) != 1)
    {
        printf("输入无效!\n");
        return 1;
    }

    printf("输入你的姓名:");
    if (scanf_s("%s", name, sizeof(name)) != 1)
    {
        printf("输入无效!\n");
        return 1;
    }

    printf("你好,%s!你的年龄是 %d。\n", name, age);

    return 0;
}</code>
로그인 후 복사

注意事项

  • scanf_s 是一个安全版本,不会出现 scanf 中的缓冲区溢出问题。
  • scanf_s 返回已成功读取的项目数,而不是像 scanf 那样的匹配项目数。
  • 若要扫描字符串,请使用 %s 格式说明符并指定字符串的最大长度。
  • scanf_s 不支持 %n
  • ...: 읽을 데이터의 주소를 제공하는 가변 매개변수 목록입니다.
🎜🎜🎜반환 값🎜🎜🎜scanf_s 성공적으로 읽은 항목 수를 반환합니다. 입력 형식이 잘못되었거나 오류가 발생하면 -1을 반환합니다. 🎜🎜🎜Usage🎜🎜🎜scanf_s를 사용하려면 다음 단계를 따르세요. 🎜
    🎜 stdio.h 헤더 파일을 포함하세요. 🎜🎜데이터를 읽으려는 변수 앞에 & 기호를 배치하세요. 🎜🎜형식 지정자가 읽으려는 데이터 유형과 일치하는지 확인하세요. 🎜🎜scanf_s의 반환 값을 확인하여 오류를 감지하세요. 🎜
🎜🎜Example🎜🎜rrreee🎜🎜Notes🎜🎜🎜🎜scanf_s는 안전한 버전이며 scanf의 버퍼 오버플로 문제를 겪지 않습니다. 🎜🎜scanf_s는 scanf와 같이 일치하는 항목 수가 아니라 성공적으로 읽은 항목 수를 반환합니다. 🎜🎜문자열을 스캔하려면 %s 형식 지정자를 사용하고 문자열의 최대 길이를 지정하세요. 🎜🎜scanf_s는 %n 형식 지정자를 지원하지 않습니다. 🎜🎜

위 내용은 C 언어에서 scanf_s 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿