當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 vwscanf用法及代碼示例


C語言wchar頭文件(wchar.h)中vwscanf函數的用法及代碼示例。

用法:

int vwscanf ( const wchar_t * format, va_list arg );
將格式化的數據讀入變量參數列表
從標準輸入讀取數據(stdin)並根據C寬字符串存儲它們格式進入由變量標識的變量參數列表中的元素所指向的位置arg

在內部,該函數從由以下項標識的列表中檢索參數:arg仿佛va_arg被用於它,因此狀態arg可能會因調用而改變。

在任何情況下,arg應該已經被初始化va_start在調用之前的某個時間點,預計它將被釋放va_end調用結束後的某個時間點。

寬字符的外部表示stdin是多字節字符:這些字符的翻譯方式就像mbrtowc被稱為(使用的內部mbstate_t目的)。

這是寬字符等價於vscanf(<cstdio>)。

參數

format
包含格式字符串的C寬字符串,其格式與格式scanf(參考scanf有關詳細信息)。
但是請注意,所有格式說明符的含義都與scanf;所以,%lc應用於讀取寬字符(而不是%c), 也%ls應該用於寬字符串(而不是%s)。
arg
一個值,該值標識用初始化的變量參數列表va_start
va_list是在中定義的特殊類型<cstdarg>

返回值

成功時,該函數返回已成功填充的參數列表的項目數。由於匹配失敗,讀取錯誤或到達的範圍,此計數可以與預期的項目數匹配或更少(甚至為零)。文件結束

如果發生讀取錯誤或文件結束讀取時到達指示符,設置了正確的指示符(feof或者ferror)。而且,如果在成功讀取任何數據之前發生了任何一種情況,EOF返回。

如果在解釋寬字符時發生編碼錯誤,則該函數會設置errnoEILSEQ

示例

/* vwscanf example */
#include <stdio.h>
#include <stdarg.h>
#include <wchar.h>

void GetWideMatches ( const wchar_t * format, ... )
{
  va_list args;
  va_start (args, format);
  vwscanf (format, args);
  va_end (args);
}

int main ()
{
  int val;
  wchar_t str[100];

  wprintf (L"Please enter a number and a word: ");
  GetWideMatches (L"%d %l[aeiou]", &val, str);
  wprintf (L"Number read: %d\nFirst vowels read: %ls\n", val, str);

  return 0;
}


可能的輸出:
Please enter a number and a word: 112 outperforming
Number read: 112
First vowels read: ou

相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C vwscanf function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。