亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? _scanfi.c

?? OMAP1030 處理器的ARM 側硬件測試代碼 OMAP1030 是TI的雙核處理器
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*****************************************************************************/
/*  _SCANFI.C v2.24                                                         */
/*  Copyright (c) 1995-2002 Texas Instruments Incorporated                   */
/*****************************************************************************/

/*****************************************************************************/
/*    This file contains the main routines that all three variations of the  */
/*    scanf function use.  The main function in the file is _scanfi, and     */
/*    the other functions here are called by it.                             */
/*                                                                           */
/* FUNCTIONS:                                                                */
/*    _scanfi        -  The main scanf handling routine                      */
/*    _sget_conv     -  Read the format flags into the _SFIELD pointer sfield*/
/*    _sget_scanset  -  Read in the scanset from the format statement        */
/*    _sproc_int     -  Read an integer string into a temporary string       */
/*    _sproc_float   -  Read a float string into a temporary string          */
/*    _sproc_str     -  Copy a string from the input source to a temporary   */
/*                      string                                               */
/*    _sproc_lb      -  Process the %[ conversion                            */
/*    _sset_arg      -  Assign the converted value to the next argument      */
/*****************************************************************************/
#include <stdio.h>
#include "format.h"
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <limits.h>

#ifdef LLONG_MAX
_CODE_ACCESS long long strtoll(const char *_st, char **_endptr, int _base);
_CODE_ACCESS unsigned long long strtoull(const char *_st, char **_endptr,
					 int _base);
#endif

_CODE_ACCESS long double strtold(const char *st, char **endptr);

static int _sget_conv(char **_format, _SFIELD *sfield);
static int _sget_scanset(_SFIELD *sfield, char **_format);
static int _sproc_int(int w_counter, int (*_inpchar)(void **inp),
                       void (*_uninpchar)(void **inp, char outchar),
                       char *tmpptr, char conv, void **inp, int *num_read);
static int _sproc_float(int w_counter, int (*_inpchar)(void **inp),
                         void (*_uninpchar)(void **inp, char outchar),
                         char *tmpptr, char conv, void **inp, int *num_read);
static int _sproc_str(int w_counter, int (*_inpchar)(void **inp),
                       void (*_uninpchar)(void **inp, char outchar),
                       char *tmpptr, char conv, void **inp, int *num_read);
static int _sproc_lb(int (*_inpchar)(void **inp),
                      void (*_uninpchar)(void **inp, char outchar),
                      char *tmpptr, _SFIELD *sfield, void **inp, int *num_read);
static void _sset_arg(_SFIELD *sfield, va_list *_ap, char *tmpbuf);

/*****************************************************************************/
/* _SCANFI  -  The main scanf handling routine                               */
/*                                                                           */
/*    This function parses all non-conversion characters in the format       */
/*    string, passes control to the appropriate function when a '%' is       */
/*    encountered, then calls _SSET_ARG, which assignes the result to the    */
/*    next argument.                                                         */
/*                                                                           */
/*****************************************************************************/
int _scanfi(void *inp, const char *_format, va_list _ap, 
            int (*_chkmbc)(void **inp, char **_format, int *num_read),
            int (*_inpchar)(void **inp), 
            void (*_uninpchar)(void **inp, char outchar))
{
   /*------------------------------------------------------------------------*/
   /* Local variables                                                        */
   /*------------------------------------------------------------------------*/
   _SFIELD  sfield;
   char     tmpbuf[256],
           *tmpptr,
           *f_ptr        = (char *)_format;
   int      num_assigned =  0,
            inchar,
            num_read     =  0,
            stat         =  0;

   /*------------------------------------------------------------------------*/
   /* If the first character in the format string is a white space character */
   /* parse the format string until a non-white space character is found.    */
   /* Do the same for the input, but put the first non-white space character */
   /* back onto the input stream when finished.                              */
   /*------------------------------------------------------------------------*/
   if (isspace(*f_ptr))
   {
      for(;isspace(*f_ptr);f_ptr++);

      inchar = _inpchar(&inp);
      if(inchar == EOF) return EOF;
      num_read++;

      for(;isspace(inchar); inchar = _inpchar(&inp), num_read++);

      _uninpchar(&inp, inchar);
      num_read--;

      if(inchar == EOF) return EOF;
   }

   while(1)
   {
      /*---------------------------------------------------------------------*/
      /* Initialize sfield                                                   */
      /*---------------------------------------------------------------------*/
      memset(&sfield, 0, sizeof(_SFIELD));
      sfield.fwidth = -1;

      /*---------------------------------------------------------------------*/
      /* Call _chkmbc to compare the format string to the input.  If a       */
      /* mismatch occurs, return an EOF, if the end of the format string     */
      /* is reached, return the number of arguments assigned.  Otherwise     */
      /* a '%' has been encountered, so call _sget_conv to process it.       */
      /*---------------------------------------------------------------------*/
      switch(_chkmbc(&inp, &f_ptr, &num_read))
      {
         case  EOF   : return (EOF);
   
         case  0     : return (num_assigned);
   
         case  1     :  _sget_conv(&f_ptr, &sfield);
   
      }
   
      tmpptr = tmpbuf;

      /*---------------------------------------------------------------------*/
      /* Unless the conversion specifier is a [, c, or n, skip to the next   */
      /* non-white space character in the input.                             */
      /*---------------------------------------------------------------------*/
      if (sfield.conv != '[' && sfield.conv != 'c' && sfield.conv != 'n')
      {
         inchar = _inpchar(&inp);
         num_read++;
    
         for(;isspace(inchar); inchar = _inpchar(&inp), num_read++);
    
         _uninpchar(&inp, inchar);
         num_read--;

         /*---------------------------------------------------------------*/
         /* If we've encountered the end of the stream AND we haven't     */
         /* matched anything yet, return EOF.                             */
         /*---------------------------------------------------------------*/
         if(inchar == EOF && num_read == 0) return EOF;
      }
      else
      {
         /*---------------------------------------------------------------*/
         /* If we've encountered the end of the stream AND we haven't     */
         /* matched anything yet, return EOF.                             */
         /*---------------------------------------------------------------*/
         inchar = _inpchar(&inp);
         _uninpchar(&inp, inchar);
         if(inchar == EOF && num_read == 0) return EOF;
      }

      /*---------------------------------------------------------------------*/
      /* The flags have been set in sfield, so process the conversion by     */
      /* calling the appropriate function.                                   */
      /*---------------------------------------------------------------------*/
      switch(sfield.conv)
      {
         case  'X'   :  sfield.conv = 'x';
         case  'i'   :
         case  'p'   :  
         case  'x'   :
         case  'u'   :
         case  'o'   :
         case  'd'   :  stat = _sproc_int(sfield.fwidth, _inpchar, _uninpchar, 
                                         tmpptr, sfield.conv, &inp, &num_read); 
                        break;
         case  'f'   :
         case  'e'   :
         case  'E'   :
         case  'g'   :
         case  'G'   :  stat = _sproc_float(sfield.fwidth, _inpchar, _uninpchar,
                                     tmpptr, sfield.conv, &inp, &num_read);
                        break;

         case  'c'   :  
         case  's'   : {
                          char *stptr = (sfield.flags & _SFSTAR) ?
                                         NULL : va_arg(_ap, char*);

                          stat = _sproc_str(sfield.fwidth, _inpchar, _uninpchar,
                                     stptr, sfield.conv, &inp, &num_read);
                       }
                       stat = (stat != EOF);
                       if (!(sfield.flags & _SFSTAR) && stat) num_assigned++;
                       break;

         case  '['   :  stat = _sproc_lb(_inpchar, _uninpchar, tmpptr, &sfield,
                                         &inp, &num_read);

      }

      stat = (stat != EOF);

      /*---------------------------------------------------------------------*/
      /* Now, call the function to handle the actual assignment, or if there */
      /* is no assignment to take place, process it here.                    */
      /*---------------------------------------------------------------------*/
      switch(sfield.conv)
      {
         case  'i'   :
         case  'd'   :  
         case  'x'   :
         case  'u'   :
         case  'o'   :  
         case  'p'   : 
         case  'e'   :
         case  'f'   :
         case  'g'   :
         case  'E'   :
         case  'G'   :  _sset_arg(&sfield, &_ap, tmpbuf);
                        if ((!(sfield.flags & _SFSTAR)) && stat) num_assigned++;
                        break;
 
         case  'n'   :  if (!(sfield.flags & _SFSTAR))
                           switch(sfield.flags & (_MFH | _MFL | _MFLL))
                           {
                              case  _MFH  :  *(va_arg(_ap, short int*)) =
                                             (short int)num_read;
                                             break;
 
                              case _MFL   :  *(va_arg(_ap, long int*)) =
                                             (long int)num_read;
                                             break;
#ifdef LLONG_MAX
                              case _MFLL  :  *(va_arg(_ap, long long int*)) =
                                             (long long int)num_read;
                                             break;
#endif
                              default     :  *(va_arg(_ap, int*)) =
                                             num_read;
                                             break;
                           }
                        break;

         case  '%'   :  inchar = _inpchar(&inp);
                        if (inchar != '%') return (EOF);
                        else num_read++;
                        break;
                              
         case  '['   :  if ((!(sfield.flags & _SFSTAR)) && stat)
                        {
                           strcpy(va_arg(_ap, char *), tmpbuf);
                           num_assigned++;
                        }
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区在线看| 337p亚洲精品色噜噜狠狠| 在线视频欧美区| 日韩午夜电影在线观看| 国产精品日产欧美久久久久| 亚洲国产精品久久不卡毛片| 国产成人99久久亚洲综合精品| 久久天天做天天爱综合色| 自拍偷在线精品自拍偷无码专区 | 日韩免费一区二区| 成人免费在线观看入口| 激情综合亚洲精品| 欧美日韩精品高清| 一区二区三区四区五区视频在线观看| 国产一区二区三区美女| 6080亚洲精品一区二区| 一区二区国产视频| 99国产精品99久久久久久| 久久精品亚洲精品国产欧美| 丝袜亚洲另类欧美| 欧美性感一类影片在线播放| 亚洲欧美在线另类| 成人高清视频在线| 亚洲国产精华液网站w| 国产一区二区在线观看免费| 91精品国产高清一区二区三区蜜臀| 亚洲视频 欧洲视频| 成人h动漫精品一区二区| 久久综合九色综合97婷婷女人| 亚洲国产一区视频| 欧美性大战久久久久久久| 亚洲视频中文字幕| 91精品福利视频| 亚洲欧美激情小说另类| 一本久久a久久精品亚洲| 中文字幕在线播放不卡一区| eeuss影院一区二区三区 | 欧美二区三区91| 亚洲成a天堂v人片| 91精品国产色综合久久| 丝袜a∨在线一区二区三区不卡| 国产欧美综合在线观看第十页| 免费观看一级特黄欧美大片| 日韩一卡二卡三卡| 国产真实乱子伦精品视频| 久久色在线观看| 成人av午夜电影| 亚洲六月丁香色婷婷综合久久| 色先锋aa成人| 性欧美疯狂xxxxbbbb| 88在线观看91蜜桃国自产| 麻豆免费看一区二区三区| ww久久中文字幕| 99久久婷婷国产综合精品 | 91老师片黄在线观看| 亚洲综合丁香婷婷六月香| 欧美日韩在线亚洲一区蜜芽| 秋霞电影一区二区| 久久久久国产精品麻豆ai换脸| 成人网男人的天堂| 亚洲成人动漫在线观看| 精品久久久久久久久久久久包黑料| 国产suv精品一区二区883| 亚洲蜜臀av乱码久久精品| 正在播放亚洲一区| 成人免费毛片片v| 亚洲国产成人tv| 久久综合久久99| 欧美在线视频你懂得| 久久99国产乱子伦精品免费| 18成人在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 东方欧美亚洲色图在线| 亚洲一区影音先锋| 久久精品亚洲麻豆av一区二区| 91麻豆蜜桃一区二区三区| 裸体一区二区三区| 亚洲精品免费在线| 久久女同互慰一区二区三区| 91精品福利在线| 成人午夜av影视| 麻豆专区一区二区三区四区五区| 一色桃子久久精品亚洲| 日韩欧美一级二级| 欧美性色黄大片| 欧美精品在线视频| 亚洲欧洲性图库| 福利一区二区在线观看| 欧美日韩一本到| 婷婷国产在线综合| 8v天堂国产在线一区二区| 午夜免费欧美电影| 欧美日韩精品欧美日韩精品一综合| 国产精品欧美经典| 成人免费的视频| 欧美一级搡bbbb搡bbbb| 麻豆成人在线观看| 欧美亚州韩日在线看免费版国语版| 奇米精品一区二区三区四区| 91猫先生在线| 欧美tk—视频vk| 欧美影院一区二区三区| 成人免费看的视频| 国产真实乱偷精品视频免| 日本欧美肥老太交大片| 亚洲综合无码一区二区| 专区另类欧美日韩| 国产精品拍天天在线| 久久久久久麻豆| 2020国产精品久久精品美国| 日韩一区二区三区观看| 91精品久久久久久久99蜜桃| 欧美日韩精品福利| 91精品国产一区二区三区蜜臀| 欧美三区在线视频| 欧美日韩亚洲综合在线| 欧美三级日韩三级国产三级| 欧美亚洲国产怡红院影院| 色婷婷国产精品综合在线观看| 欧美日韩精品二区第二页| 日本精品视频一区二区| 99久久久免费精品国产一区二区| 成人精品一区二区三区中文字幕| 国产二区国产一区在线观看| 东方aⅴ免费观看久久av| 成人h动漫精品一区二区| 99riav久久精品riav| 色婷婷av一区二区三区软件| 在线观看不卡一区| 91精品欧美综合在线观看最新| 91精品国产一区二区| 2017欧美狠狠色| 国产精品国产三级国产aⅴ入口 | 免费在线看一区| 紧缚奴在线一区二区三区| 国产福利91精品一区| 91小视频免费观看| 欧美日韩精品三区| 欧美精品一区二区不卡| 国产欧美综合色| 亚洲激情在线播放| 男女性色大片免费观看一区二区 | 日本乱码高清不卡字幕| 欧美日韩在线电影| 2014亚洲片线观看视频免费| 国产精品三级av| 午夜精品久久久久久久| 国产综合色精品一区二区三区| 成人精品免费网站| 欧美日韩一卡二卡三卡| 久久精品一二三| 亚洲一本大道在线| 国产呦精品一区二区三区网站| 99re视频精品| 日韩午夜av一区| 自拍偷拍亚洲欧美日韩| 欧美bbbbb| av爱爱亚洲一区| 日韩午夜电影av| 亚洲人被黑人高潮完整版| 麻豆91精品视频| 欧美亚男人的天堂| 2023国产一二三区日本精品2022| 樱桃视频在线观看一区| 国产乱码字幕精品高清av| 在线观看日韩高清av| 国产日产亚洲精品系列| 天使萌一区二区三区免费观看| 成人午夜碰碰视频| 欧美不卡一区二区三区| 亚洲一区二区三区四区的 | 精品粉嫩超白一线天av| 一区二区三区在线观看网站| 国产精品亚洲一区二区三区在线| 欧美人动与zoxxxx乱| 亚洲婷婷在线视频| 粉嫩绯色av一区二区在线观看| 制服丝袜亚洲色图| 亚洲精品久久嫩草网站秘色| 国产99久久久国产精品潘金网站| 欧美精品xxxxbbbb| 亚洲午夜久久久久中文字幕久| 国产91富婆露脸刺激对白| 欧美sm美女调教| 秋霞午夜鲁丝一区二区老狼| 欧美色视频在线观看| 亚洲欧美另类久久久精品2019| 国产精品伊人色| 亚洲精品一区在线观看| 日韩成人免费看| 欧美日韩你懂得| 午夜婷婷国产麻豆精品| 在线日韩一区二区| 亚洲精品国产视频| 99久久er热在这里只有精品66| 日本一二三不卡| 成人自拍视频在线| 国产精品久久国产精麻豆99网站| 国产成人免费视频精品含羞草妖精| 精品成人免费观看|