美文网首页
c语言实现命令解析

c语言实现命令解析

作者: 一路向后 | 来源:发表于2021-04-06 23:00 被阅读0次

1.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void getArgs(char *str, int n)
{
    char arg[32][128];
    int u = 0;
    int i;
    int j = 0;
    int k = 0;

    for(i=0; i<n; i++)
    {
        if(str[i] == '\"')
        {
            if(u)
            {
                arg[k][j] = 0x00;
                /*printf("%s\n", arg);*/
                j = 0;
                k++;
            }

            u = !u;
        }
        else if(!u && (str[i] == ' ' || str[i] == '\t'))
        {
            arg[k][j] = 0x00;

            if(j > 0)
            {
                /*printf("%s\n", arg);*/
                k++;
            }

            j = 0;
        }
        else
        {
            arg[k][j] = str[i];
            j++;
        }
    }

    if(!u && str[i] != ' ' && str[i] != '\t')
    {
        arg[k][j] = 0x00;

        if(j > 0)
        {
            /*printf("%s\n", arg);*/
            k++;
        }

        j++;
    }

    printf("%d\n", k);

    for(i=0; i<k; i++)
    {
        printf("%s\n", arg[i]);
    }
}

int main()
{
    char linebuf[1024];
    int len;

    memset(linebuf, 0x00, sizeof(linebuf));

    while(fgets(linebuf, 1023, stdin) != NULL)
    {
        len = strlen(linebuf);

        if(linebuf[len-1] == '\n')
        {
            linebuf[len-1] = 0x00;
            len--;
        }

        getArgs(linebuf, len);
    }

    return 0;
}

2.编译源码

$ gcc -o example examle.c -std=c89

4.运行及其结果

$ ./example
xcopy /s c:\\ d:\\
4
xcopy
/s
c:\\
d:\\

相关文章

  • c语言实现命令解析

    1.源码实现 2.编译源码 4.运行及其结果

  • 我的书目

    基础篇: 语言(c, scheme): c:命令式语言的代表, 高级语言,最接近底层的高级语言。操作系统的实现语言...

  • Zsh oh-my-zsh

    Reference Mac、Linux 安装zsh & ohmyzsh shell 俗称壳,c语言编写的命令解析器...

  • 「MojoUnityJson」C#实现超级简单和高效的JSON解

    MojoUnityJson是使用C#实现的JSON解析器 ,算法思路来自于游戏引擎Mojoc的C语言实现Json....

  • Go标准库flag使用

    Go语言标准库flag基本使用 Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简...

  • cjson 源码分析

    cjson 的源码大约1000行左右,用C语言实现了一个json的解析器。c语言没有字典或key-value这样的...

  • Go-flag包解析

    简介 godoc-flag 标准库-命令行参数解析flag cobra-解析命令 功能:flag实现命令行解析 使...

  • C/C++ 命令行参数解析库选型

    C/C++ 程序可以用的命令行参数解析库主要有如下这些: cmdline:一个轻量级的 C/C++ 命令行参数解析...

  • 命令行参数解析(c编程)

    该文主要介绍c语言通过命令行方式输入参数,程序如何获取并解析参数。例如:./a.out -a red -b blu...

  • 二叉堆

    https://zh.visualgo.net/heap 二叉堆例程二叉堆(一)之 图文解析 和 C语言的实现 -...

网友评论

      本文标题:c语言实现命令解析

      本文链接:https://www.haomeiwen.com/subject/vvtykltx.html