📜  C库中的wprintf()和wscanf

📅  最后修改于: 2021-05-25 23:18:28             🧑  作者: Mango

如果要处理宽字符,则不能使用printf()和scanf()函数。输入和输出C宽字符串有不同的功能。

  1. wprintf(): wprintf()函数将格式指向的宽字符串写入stdout。宽字符串格式可能包含以%开头的格式说明符,这些格式说明符由作为附加参数传递给wprintf()函数的变量的值替换。

    句法 :

    int wprintf (const wchar_t* format, ...);

    参数 :

    • format:指向以空终止的宽字符串的指针,该字符串被写入stdout。它由宽字符以及以%开头的可选格式说明符组成。格式说明符由格式之后的各个变量的值代替。
    • …:其他附加参数指定要打印的数据。它们按照格式说明符的顺序出现。这些参数至少应与格式说明符中指定的值数量一样多。其他参数由函数忽略。
    • 返回值:如果成功,则wprintf()函数将返回写入的字符数。失败时,它将返回负值。如果成功,则wprintf()函数将返回写入的字符数。
      失败时,它将返回负值。
    // C Program to show the wprintf () function.
    #include 
    #include  // Header file containing wprintf function
    // Driver code
    int main()
    {
        wint_t x = 5;
        wchar_t name[] = L"GEEKS";
        wprintf(L"x = %d \n", x);
        wprintf(L"HELLO %ls \n", name);
        return 0;
    }
    

    输出:

    x = 5 
    HELLO GEEKS
    
  2. wscanf(): wscanf()函数从stdin读取数据并将其值存储到相应的变量中。附加参数应指向格式字符串由其相应的格式说明符指定的类型的已分配对象。

    句法 :

    int wscanf (const wchar_t* format, ...);

    参数 :

    • format:指向以空字符字符串的指针,该字符串指定如何读取输入。它由以%开头的格式说明符组成。但是请注意,所有格式说明符的含义都与scanf中的含义相同;因此,%lc应该用于读取宽字符(而不是%c),%ls应该用于宽字符串(而不是%s)。
    • …:用于接收数据的其他附加参数。它们根据格式说明符按顺序出现。这些参数至少应与格式说明符存储的值数量一样多。其他参数由函数忽略。
    • 返回值: wscanf()函数返回成功分配的接收参数的数量。我们可以计算并匹配预期的项目数,或者由于匹配失败,发生读取错误或文件末尾的到达导致错误而导致的项目数减少。
      如果在分配第一个接收参数之前发生故障,则返回EOF。
    // Program to show the wprintf () function.
    #include 
    #include  // Header file containing wscanf() function
    int main()
    {
        wchar_t str[80];
        int i;
      
        wscanf(L"%ls", str);
        wscanf(L"%d", &i);
        wprintf(L"I am a %ls of CSE in %d year.\n", str, i);
        return 0;
    }
    

    输入:

    GEEK
    2
    

    输出:

    I am a GEEK of CSE in 2 year.
    
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。