main函数的实现解析
2016-05-26 23:40
477 查看
main函数的传参的实现,其实也是一个解析字符串的过程:将每个word后一个空格改为“/0”,将单词提取出来。
就是这么简单。
废话不多说,直接上代码:
就是这么简单。
废话不多说,直接上代码:
#include<stdio.h> #include<string.h> void shell_parse(char *sbuf) { char mbuf[50]; sprintf(mbuf,"%s",sbuf); char *buf=mbuf;//两次转换,得到一个能++的指针 //strcpy(a,buf); int i; int argc=0; char *argv[8]; int state = 0; while(*buf) { char c = *buf; printf("%c\n",c); if(c == ' ' &&state==0) state = 0; if(c!= ' '&& state ==0) { argv[argc++] =buf; state = 1; printf("1:::argv[%d]:%s\n",argc,argv[0]); } if(c == ' '&&state == 1) { *buf = '\0'; state = 0; } /* if(c !=' '&& state == 0) { argv[argc++] = buf; printf("2::argv[%d]:%s\n",argc,argv[argc]); state = 1; }*/ buf++; if(*buf == '\n') *buf = '\0'; } argv[argc] = NULL; printf("argc = %d\n",argc); for(i = 0;i<=argc;i++) { printf("argv[%d]:%s\n",i,argv[i]); } // free((void*)buf); } int main(int argc,char **argv) { int i = 0; char buf[64]; //fgets(buf,64,stdin); //printf("buf = %s\n",buf); sprintf(buf,"%s","hsfsfs fsf fsaf;fsa fsfd"); printf("hell"); shell_parse("fsjf sflsdjf dsfsfsdf fs");//此处实现完全传出来的是参数。 }
相关文章推荐
- IPC进程间通信 - AIDL+Binder
- linker command failed with exit code 1 (use -v to see invocation)报错
- 解决open-vm-tools安装时Failed to get unit file state for run-vmblockx2dfuse.mount
- 报错"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::at(unsigne
- 检测是否超出int范围 && 11. Container With Most Water
- scala之trait详解一
- Theano: CNMeM is disabled, CuDNN not available
- X64操作系统组件Jmail无法正常服务问题
- X64操作系统组件Jmail无法正常服务问题
- Crazy Thairs_poj3378_DP+离散+高精度+树状数组
- WM_PAINT
- int main(int argc,char* argv[])详解
- 如何理解:int main(int argc, char** argv)
- 【CodeForces】675B - Restoring Painting(数学推导)
- 论文笔记之:Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition
- Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷
- 【CodeForces】667A - Pouring Rain(数学)
- Installation error: INSTALL_FAILED_DUPLICATE_PERMISSION
- chromium WinMain
- haartraining训练生成xml过程