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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rtfreadr.c

?? 一個(gè)可以代開(kāi)寫(xiě)字板RTF格式的小程序
?? C
字號(hào):
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "rtftype.h"
#include "rtfdecl.h"

int cGroup;
bool fSkipDestIfUnk;
long cbBin;
long lParam;

RDS rds;
RIS ris;

CHP chp;
PAP pap;
SEP sep;
DOP dop;

SAVE *psave;
FILE *fpIn;

//
// %%Function: main
//
// Main loop. Initialize and parse RTF.
//
main(int argc, char *argv[])
{
    FILE *fp;
    int ec;

    fp = fpIn = fopen("D:\\open.rtf", "r");
    if (!fp)
    {
        printf ("Can't open test file!\n");
        return 1;
    }
    if ((ec = ecRtfParse(fp)) != ecOK)
        printf("error %d parsing rtf\n", ec);
    else
        printf("Parsed RTF file OK\n");
    fclose(fp);
    return 0;
}

//
// %%Function: ecRtfParse
//
// Step 1:
// Isolate RTF keywords and send them to ecParseRtfKeyword;
// Push and pop state at the start and end of RTF groups;
// Send text to ecParseChar for further processing.
//

int
ecRtfParse(FILE *fp)
{
    int ch;
    int ec;
    int cNibble = 2;
    int b = 0;
    while ((ch = getc(fp)) != EOF)
    {
        if (cGroup < 0)
            return ecStackUnderflow;
        if (ris == risBin)                      // if we're parsing binary data, handle it directly
        {
            if ((ec = ecParseChar(ch)) != ecOK)
                return ec;
        }
        else
        {
            switch (ch)
            {
            case '{':
                if ((ec = ecPushRtfState()) != ecOK)
                    return ec;
                break;
            case '}':
                if ((ec = ecPopRtfState()) != ecOK)
                    return ec;
                break;
            case '\\':
                if ((ec = ecParseRtfKeyword(fp)) != ecOK)
                    return ec;
                break;
            case 0x0d:
            case 0x0a:          // cr and lf are noise characters...
                break;
            default:
                if (ris == risNorm)
                {
                    if ((ec = ecParseChar(ch)) != ecOK)
                        return ec;
                }
                else
                {               // parsing hex data
                    if (ris != risHex)
                        return ecAssertion;
                    b = b << 4;
                    if (isdigit(ch))
                        b += (char) ch - '0';
                    else
                    {
                        if (islower(ch))
                        {
                            if (ch < 'a' || ch > 'f')
                                return ecInvalidHex;
                            b += (char) ch - 'a';
                        }
                        else
                        {
                            if (ch < 'A' || ch > 'F')
                                return ecInvalidHex;
                            b += (char) ch - 'A';
                        }
                    }
                    cNibble--;
                    if (!cNibble)
                    {
                        if ((ec = ecParseChar(b)) != ecOK)
                            return ec;
                        cNibble = 2;
                        b = 0;
						ris = risNorm;
                    }
                }                   // end else (ris != risNorm)
                break;
            }       // switch
        }           // else (ris != risBin)
    }               // while
    if (cGroup < 0)
        return ecStackUnderflow;
    if (cGroup > 0)
        return ecUnmatchedBrace;
    return ecOK;
}

//
// %%Function: ecPushRtfState
//
// Save relevant info on a linked list of SAVE structures.
//

int
ecPushRtfState(void)
{
    SAVE *psaveNew = malloc(sizeof(SAVE));
    if (!psaveNew)
        return ecStackOverflow;

    psaveNew -> pNext = psave;
    psaveNew -> chp = chp;
    psaveNew -> pap = pap;
    psaveNew -> sep = sep;
    psaveNew -> dop = dop;
    psaveNew -> rds = rds;
    psaveNew -> ris = ris;
    ris = risNorm;
    psave = psaveNew;
    cGroup++;
    return ecOK;
}

//
// %%Function: ecPopRtfState
//
// If we're ending a destination (that is, the destination is changing),
// call ecEndGroupAction.
// Always restore relevant info from the top of the SAVE list.
//

int
ecPopRtfState(void)
{
    SAVE *psaveOld;
    int ec;

    if (!psave)
        return ecStackUnderflow;

    if (rds != psave->rds)
    {
        if ((ec = ecEndGroupAction(rds)) != ecOK)
            return ec;
    }
    chp = psave->chp;
    pap = psave->pap;
    sep = psave->sep;
    dop = psave->dop;
    rds = psave->rds;
    ris = psave->ris;

    psaveOld = psave;
    psave = psave->pNext;
    cGroup--;
    free(psaveOld);
    return ecOK;
}

//
// %%Function: ecParseRtfKeyword
//
// Step 2:
// get a control word (and its associated value) and
// call ecTranslateKeyword to dispatch the control.
//

int
ecParseRtfKeyword(FILE *fp)
{
    int ch;
    char fParam = fFalse;
    char fNeg = fFalse;
    int param = 0;
    char *pch;
    char szKeyword[30];
    char szParameter[20];

    szKeyword[0] = '\0';
    szParameter[0] = '\0';
    if ((ch = getc(fp)) == EOF)
        return ecEndOfFile;
    if (!isalpha(ch))           // a control symbol; no delimiter.
    {
        szKeyword[0] = (char) ch;
        szKeyword[1] = '\0';
        return ecTranslateKeyword(szKeyword, 0, fParam);
    }
    for (pch = szKeyword; isalpha(ch); ch = getc(fp))
        *pch++ = (char) ch;
    *pch = '\0';
    if (ch == '-')
    {
        fNeg  = fTrue;
        if ((ch = getc(fp)) == EOF)
            return ecEndOfFile;
    }
    if (isdigit(ch))
    {
        fParam = fTrue;         // a digit after the control means we have a parameter
        for (pch = szParameter; isdigit(ch); ch = getc(fp))
            *pch++ = (char) ch;
        *pch = '\0';
        param = atoi(szParameter);
        if (fNeg)
            param = -param;
        lParam = atol(szParameter);
        if (fNeg)
            param = -param;
    }
   if (ch != ' ')
        ungetc(ch, fp);
    return ecTranslateKeyword(szKeyword, param, fParam);
}

//
// %%Function: ecParseChar
//
// Route the character to the appropriate destination stream.
//

int
ecParseChar(int ch)
{
    if (ris == risBin && --cbBin <= 0)
        ris = risNorm;
    switch (rds)
    {
    case rdsSkip:
        // Toss this character.
        return ecOK;
    case rdsNorm:
        // Output a character. Properties are valid at this point.
        return ecPrintChar(ch);
    default:
    // handle other destinations....
        return ecOK;
    }
}
//
// %%Function: ecPrintChar
//
// Send a character to the output file.
//

int
ecPrintChar(int ch)
{
    // unfortunately, we don't do a whole lot here as far as layout goes...
    putchar(ch);
    return ecOK;
} 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美喷水一区二区| 国产精品麻豆网站| 中文字幕免费在线观看视频一区| 亚洲婷婷综合色高清在线| 日韩av一区二区三区| 99麻豆久久久国产精品免费| 欧美裸体bbwbbwbbw| 国产精品免费观看视频| 久久精品99国产精品日本| 欧美专区日韩专区| 中文字幕av一区二区三区高| 久久国产福利国产秒拍| 欧美性大战久久久久久久蜜臀| 日本一区二区三区在线不卡 | 欧美二区在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美精品久久天天躁| 综合精品久久久| 国产精品综合av一区二区国产馆| 欧美猛男超大videosgay| 自拍偷自拍亚洲精品播放| 国产精品18久久久久久久久久久久 | 8x8x8国产精品| 亚洲图片自拍偷拍| 色婷婷激情综合| 亚洲人午夜精品天堂一二香蕉| 国产一区二区三区精品欧美日韩一区二区三区| 91福利国产成人精品照片| 中文成人综合网| 成人午夜免费电影| 久久欧美一区二区| 国产精品一卡二卡| 久久久亚洲精华液精华液精华液| 久热成人在线视频| 欧美mv和日韩mv国产网站| 免费成人美女在线观看.| 日韩色在线观看| 免费观看日韩av| 日韩精品一区二区三区四区视频 | 久久精品99国产精品日本| 日韩午夜精品视频| 久久精品99国产精品| 精品国产一区二区三区久久影院| 日韩高清一级片| 精品区一区二区| 国产剧情一区二区| 欧美国产欧美综合| www.成人网.com| 亚洲一区影音先锋| 91精品久久久久久久久99蜜臂| 日韩电影在线免费观看| 精品理论电影在线观看| 国产永久精品大片wwwapp| 中文无字幕一区二区三区| 91麻豆免费在线观看| 亚洲国产日产av| 777奇米成人网| 国产一区二区三区高清播放| 亚洲国产岛国毛片在线| 在线免费视频一区二区| 久久精品av麻豆的观看方式| 亚洲精品在线免费观看视频| 国产精品中文字幕欧美| 亚洲黄色小说网站| 精品国产免费久久| 色av成人天堂桃色av| 日韩精品一区第一页| 国产欧美一二三区| 欧美日韩精品免费观看视频| 国内精品伊人久久久久av影院 | 欧美三级电影网| 秋霞成人午夜伦在线观看| 久久久www成人免费毛片麻豆| 天涯成人国产亚洲精品一区av| www亚洲一区| 91成人国产精品| 国产一区二区三区不卡在线观看 | 国产精品久久久久毛片软件| 欧美午夜片在线看| 国产**成人网毛片九色 | 91精品久久久久久蜜臀| 99麻豆久久久国产精品免费 | 日韩一区二区在线观看视频播放| 成人av电影在线| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲欧美日韩小说| 久久奇米777| 91精品国产麻豆| 在线免费精品视频| 成人综合婷婷国产精品久久蜜臀 | 亚洲综合成人在线视频| 国产喷白浆一区二区三区| 337p亚洲精品色噜噜| 日本韩国欧美国产| 成人伦理片在线| 国产一区二区三区美女| 日韩成人一级大片| 性感美女久久精品| 亚洲欧美视频一区| 国产精品毛片久久久久久| 精品欧美一区二区久久| 91精品国产综合久久香蕉的特点 | 久久亚洲春色中文字幕久久久| 欧美手机在线视频| 色综合天天综合| 成人激情小说乱人伦| 国产麻豆精品在线| 韩国在线一区二区| 国产伦精一区二区三区| 国产在线一区二区综合免费视频| 日韩不卡一二三区| 天天色综合天天| 亚洲va欧美va人人爽| 午夜久久久影院| 亚洲国产综合人成综合网站| 一区二区三区在线观看国产| 亚洲欧洲精品一区二区三区不卡| 国产精品久久久久久久久搜平片 | 不卡免费追剧大全电视剧网站| 国产伦精一区二区三区| 国产成人午夜片在线观看高清观看| 麻豆精品精品国产自在97香蕉| 麻豆视频一区二区| 秋霞午夜av一区二区三区| 日韩电影免费一区| 国模少妇一区二区三区| 国产成人av电影免费在线观看| 国产精品小仙女| 91香蕉国产在线观看软件| 欧美综合一区二区三区| 欧美人伦禁忌dvd放荡欲情| 91精品婷婷国产综合久久性色| 日韩欧美一区二区免费| 久久伊人中文字幕| 国产精品麻豆久久久| 亚洲免费av观看| 偷拍一区二区三区| 国内精品国产成人国产三级粉色| 国产成人丝袜美腿| 色婷婷久久久久swag精品| 欧美日韩欧美一区二区| 欧美r级在线观看| 国产精品视频一区二区三区不卡| 亚洲欧美偷拍卡通变态| 视频一区免费在线观看| 久久国产剧场电影| av资源站一区| 欧美电影一区二区三区| 久久人人爽人人爽| 亚洲一区二区免费视频| 天堂va蜜桃一区二区三区 | 亚洲va欧美va人人爽午夜| 久久精品国产成人一区二区三区| 国产aⅴ精品一区二区三区色成熟| 成人免费视频caoporn| 欧美怡红院视频| 久久午夜老司机| 亚洲午夜私人影院| 国产自产视频一区二区三区| 91福利国产成人精品照片| 欧美大黄免费观看| 亚洲欧美一区二区三区国产精品| 免费不卡在线视频| 91小视频在线免费看| 精品剧情v国产在线观看在线| 国产精品另类一区| 老司机精品视频导航| 在线精品视频一区二区三四| 精品嫩草影院久久| 伊人开心综合网| 粉嫩一区二区三区性色av| 欧美日韩国产不卡| 中文字幕电影一区| 免费在线一区观看| 欧洲激情一区二区| 中文字幕人成不卡一区| 日韩精品三区四区| 在线亚洲免费视频| 中文字幕在线不卡| 国产成人精品亚洲日本在线桃色 | 欧美视频在线观看一区二区| 国产亚洲欧美色| 久久精品理论片| 日本电影欧美片| 国产精品久久久久久久久免费樱桃| 蜜桃视频免费观看一区| 欧美人与禽zozo性伦| 中文字幕在线观看不卡| 成人夜色视频网站在线观看| 欧美成人女星排名| 免费一级片91| 91精品在线麻豆| 日韩不卡在线观看日韩不卡视频| 欧洲日韩一区二区三区| 国产精品福利一区二区三区| 国产精品综合一区二区三区| 国产日韩成人精品| 国产成人精品一区二区三区四区 | 国产高清在线精品| 欧美精品一区二区三区高清aⅴ|