main函数的实现解析

main函数的传参的实现,其实也是一个解析字符串的过程:将每个word后一个空格改为“/0”,将单词提取出来。

就是这么简单。

废话不多说,直接上代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 void shell_parse(char *sbuf)
 4 {
 5 char mbuf[50];
 6 sprintf(mbuf,"%s",sbuf);
 7     char *buf=mbuf;//两次转换,得到一个能++的指针
 8
 9     //strcpy(a,buf);
10     int i;
11     int argc=0;
12     char *argv[8];
13     int state = 0;
14     while(*buf)
15     {
16         char c = *buf;
17         printf("%c\n",c);
18         if(c == ‘ ‘ &&state==0)
19             state = 0;
20         if(c!= ‘ ‘&& state ==0)
21         {
22             argv[argc++] =buf;
23             state = 1;
24             printf("1:::argv[%d]:%s\n",argc,argv[0]);
25         }
26         if(c == ‘ ‘&&state == 1)
27         {
28             *buf = ‘\0‘;
29             state = 0;
30         }
31     /*    if(c !=‘ ‘&& state == 0)
32         {
33             argv[argc++] = buf;
34             printf("2::argv[%d]:%s\n",argc,argv[argc]);
35             state = 1;
36
37         }*/
38         buf++;
39         if(*buf == ‘\n‘)
40         *buf = ‘\0‘;
41
42     }
43         argv[argc] = NULL;
44
45         printf("argc = %d\n",argc);
46         for(i = 0;i<=argc;i++)
47         {
48             printf("argv[%d]:%s\n",i,argv[i]);
49         }
50 //        free((void*)buf);
51 }
52 int main(int argc,char **argv)
53 {
54     int i = 0;
55     char buf[64];
56 //fgets(buf,64,stdin);
57 //printf("buf = %s\n",buf);
58     sprintf(buf,"%s","hsfsfs fsf fsaf;fsa fsfd");
59     printf("hell");
60     shell_parse("fsjf  sflsdjf dsfsfsdf fs");//此处实现完全传出来的是参数。
61
62 }
63     
时间: 2024-12-30 01:04:48

main函数的实现解析的相关文章

main函数参数解析

int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main(int argc, char *argv[]){... ...}argc和argv是main函数的形式参数.这两个形式参数的类型是系统规定的.如果main函数要带参数,就是这两个类型的参数:否则main函数就没有参数.变量名称argc和argv是常规的名称,当然也可以换成其他名称.那么,实际参数是如

菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)

俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中的奥秘,下面我们就一起来研究一下nginx的main函数. 1.nginx的main函数解读 nginx启动显然是由main函数驱动的,main函数在在core/nginx.c文件中,其源代码解析如下,涉及到的数据结构在本节仅指出其作用,将在第二节中详细解释. nginx main函数的流程图如下:

【iOS】被忽略的main函数

如同任何基于C的应用程序,程序启动的主入口点为iOS应用程序的main函数.在iOS应用程序,main函数的作用是很少的.它的主要工作是控制UIKit framework.因此,你在Xcode中创建任何新的项目都配备了一个默认的主函数.除了少数特例外,你永远不应该改变这个函数的实现. 1 #import <UIKit/UIKit.h> 2 3 #import "AppDelegate.h" 4 5 int main(int argc, char * argv[]) 6 {

HEVC代码学习1:TAppEncoder的main函数

TAppEncoder是编码器工程,完成视频序列的编码. 运行时,首先调用encmain.cpp中的main函数 main函数中完成的工作主要有初始化encoder类,解析cfg文件,然后调用TAppEncTop::encode函数进入下一层,并且对编码过程进行计时. 其中调用了重要参数TAppEncTop::encode,是编码器的最上层的入口. int main(int argc, char* argv[]) { TAppEncTop cTAppEncTop; //定义cTAppEncTop

ffmpeg源码分析二:main函数和transcode函数 (转2)

原帖地址:http://blog.csdn.net/austinblog/article/details/24804455 首先从main函数看起,关键解释部分已加注释,该函数在ffmpeg.c文件中.代码如下: int main(int argc, char **argv) { int ret; int64_t ti; // 注册清理回调函数 register_exit(ffmpeg_cleanup); setvbuf(stderr,NULL,_IONBF,0); /* win32 runti

[汇编与C语言关系]2. main函数与启动例程

为什么汇编程序的入口是_start,而C程序的入口是main函数呢?以下就来解释这个问题 在<x86汇编程序基础(AT&T语法)>一文中我们汇编和链接的步骤是: $ as hello.s -o hello.o $ ld hello.o -o hello 我们用gcc main.c -o main开编译一个c程序,其实际分为三个步骤:编译.汇编.链接 $ gcc -S main.c 生成汇编代码 $ gcc -c main.s 生成目标文件 $ gcc main.o 生成可执行文件 我们

从开机加电到执行main函数之前的过程

1.启动BIOS,准备实模式下中断向量表和中断服务程序 在按下电源按钮的瞬间,CPU硬件逻辑强制将CS:IP设置为0xFFFF:0x0000,指向内存地址的0xFFFF0位置,此位置属于BIOS的地址范围.关于硬件如何指向BIOS区,这是一个纯硬件动作,在RAM实地址空间中,属于BIOS地址空间部分为空,硬件只要见到CPU发出的地址属于BIOS地址范围,直接从硬件层次将访问重定向到BIOS的ROM区中.这也就是为什么RAM中存在空洞的原因. BIOS程序在内存最开始的位置(0x00000)用1K

第七章之main函数和启动例程

main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题.在讲例 18.1 "最简单的汇编程序"时,我们的汇编和链接步骤是: $ as hello.s -o hello.o$ ld hello.o -o hello以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件: $ gcc -S main.c$ gcc -c main.s$ gcc

(转)被忽略的Main函数

如同任何基于C的应用程序,程序启动的主入口点为iOS应用程序的main函数.在iOS应用程序,main函数的作用是很少的.它的主要工作是控制UIKit framework.因此,你在Xcode中创建任何新的项目都配备了一个默认的主函数.除了少数特例外,你永远不应该改变这个函数的实现. 1 #import <UIKit/UIKit.h> 2 3 #import "AppDelegate.h" 4 5 int main(int argc, char * argv[]) 6 {