本帖最后由 ajfan 于 2013-1-10 10:39 编辑
请教各位大神,下面有一段keil 中字符串分割的程序我目前在main中运行正确,在1602的第4,第8,第12位置能正常显示分割出的"aa" "bb" "cc"字符串
但我想将该部分内容做成函数的性质调用,但一直编译不通过,请帮忙看下指点下迷津,感谢。
在main下编译通过的程序:
unsigned char buffer[]={"aa,bb,cc"};
unsigned char i=0;
unsigned char *p[3];
unsigned char *buff= buffer;
while((p=strtok(buff,","))!=NULL)
{
i++;
buff=NULL;
}
LCD_write_str(4,0,p[0]);
LCD_write_str(8,0,p[1]);
LCD_write_str(12,0,p[2]);
半途出家,自己瞎模滚打凑出来的函数,但编译不通过,也不知道该如何在main中调用
Split_String(unsigned char *buffer);
{
unsigned char i=0;
unsigned char *p[3];
unsigned char *buff= buffer;
while((p=strtok(buff,","))!=NULL)
{
i++;
buff=NULL;
}
return p;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
buffer应该是Input_String吧!
这是strtok函数的标准用法,也是网上找的,已经在开发板上验证过是OK的,现在像把这段内容做成函数调用,下面是我自己封装的函数,除去语法的问题,我在main 中该如何调用?
是否应该是这样
unsigned char *p;
unsigned char Input_String[]={"aa,bb,cc"};
main(1)
{
p=Split_String(Input_String);
LCD_write_str(4,0,p[0]);
LCD_write_str(8,0,p[1]);
LCD_write_str(12,0,p[2]);
}
自己封装的函数(不一定对。。。。)
Split_String(unsigned char *buffer)
{
unsigned char i=0;
unsigned char *p[3];
unsigned char *buff= buffer;
while((p=strtok(buff,","))!=NULL)
{
i++;
buff=NULL;
}
return p;
}
谢谢毛毛雨,初学阶段,见笑了
我将程序更改了成如下形式
函数
unsigned char *Split_String (unsigned char *Input_String)
{
unsigned char i=0;
unsigned char *p[3];
unsigned char *buff= Input_String;
while((p=strtok(buff,","))!=NULL)
{
i++;
buff=NULL;
}
return p;
}
main内该部分函数(其他LCD及初始化部分省略掉了)
unsigned char *t;
unsigned char buffer[]={"aa,bb,cc"};
t=Split_String(buffer);
LCD_write_str(4,0,t+0);
LCD_write_str(8,0,t+1);
LCD_write_str(12,0,t+2);
目前跑出来的结果为几个大坨坨,程序端应该还有比较多的错误,请各位高手再帮忙扫下盲,谢谢。
一周热门 更多>