c语言怎样提取有参数的方法,如何从调用的函数里面取出参数

怎么从调用的函数里面取出参数

先grep出来要查找的函数,内容放在a.txt里面,比如

$grep  -nr  store_func  ./* > a.txt

a.txt里面的内容如下:

/home/cbs/src/file1.c:53:      int    store_func(char *a,int b,FILE* fp)

/home/cbs/src/file2.c:128:    store_func(a,b,fp)

/home/cbs/src/file3.c:234:    if(tmp==store_func(a,b,fp))

.......

.......

如何将参数准确的分离出来并保存在b.txt里面,处理后内容如下:

/home/cbs/src/file1.c  3  char *a  int b  FILE* fp(说明:分隔符为一个空格符号,第二个参数3是函数参数的个数)

/home/cbs/src/file2.c  3  a  b  fp

/home/cbs/src/file3.c  3  a  b  fp

.......

.......

linux系统环境,要求使用C语言及其函数,可以适当调用Popen函数执行shell

------解决思路----------------------

仅供参考:

#include 

char s[]="123 ab 4";

char *p;

int v,n,k;

void main() {

p=s;

while (1) {

k=sscanf(p,"%d%n",&v,&n);

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

if (1==k) {

p+=n;

} else if (0==k) {

printf("skip char[%c]\n",p[0]);

p++;

} else {//EOF==k

break;

}

}

printf("End.\n");

}

//k,v,n=1,123,3

//k,v,n=0,123,3

//skip char[ ]

//k,v,n=0,123,3

//skip char[a]

//k,v,n=0,123,3

//skip char[b]

//k,v,n=1,4,2

//k,v,n=-1,4,2

//End.

------解决思路----------------------

再供参考:

//NAME: essaie bla bla

//DIMENSION: 8

//DATA

//1  14  15

//2  11  10

//3  6   4

//4  7   13

//5  9   21

//6  19  3

//7  1   5

//8  8   8

//EOF

//

// 文本文件中可能还含有其他内容,但是需要用到的内容即以上

//比如data.txt:

//NAME: essaie bla bla

//其它内容

//DIMENSION: 8

//其它内容

//DATA

//其它内容

//1  14  15

//其它内容

//2  11  10

//其它内容

//3  6   4

//其它内容

//4  7   13

//其它内容

//5  9   21

//其它内容

//6  19  3

//其它内容

//7  1   5

//其它内容

//8  8   8

//其它内容

//EOF

// 目标是要获取NAME后字串,DIMENSION后数值,以及DATA以下的数值

// 其中NAME就是随便个字句,DIMENSION是城市数量,DATA以下是城市编号,X坐标,Y坐标

// 所有的这些将赋值给一个事先定义好的结构

#include 

#include 

#define MAXCPL   80   //每行最大字符数

#define MAXCITY  100  //每组数据中DATA最多项数,DIMENSION的最大值

#define MAXNAMEL 32   //NAME最大长度

struct S {

char NAME[MAXNAMEL+1];

int  DIMENSION;

struct D {

int NO;

int X;

int Y;

} DATA[MAXCITY];

} s;

FILE *f;

int st,n,i;

char ln[MAXCPL];

int main() {

f=fopen("data.txt","r");

if (NULL==f) {

printf("Can not open file data.txt!\n");

return 1;

}

st=0;

n=0;

while (1) {

if (NULL==fgets(ln,MAXCPL,f)) break;

if (st==0) {

if (1==sscanf(ln,"NAME: %32[^\n]",s.NAME)) st=1;

} else if (st==1) {

if (1==sscanf(ln,"DIMENSION: %d",&s.DIMENSION)) st=2;

} else if (st==2) {

if (0==strcmp(ln,"DATA\n")) st=3;

} else if (st==3) {

if (3==sscanf(ln,"%d%d%d",&s.DATA[n].NO,&s.DATA[n].X,&s.DATA[n].Y)) {

n++;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值