写完了
但是不知道如何返回?
谁能告诉如何返回吗 ?
谢谢了
typedef struct{
char name[10];
int amount;
}token;
token scan(char buffer[]){
int i=0,j=0 ;
char p[2];
token result[10];
p[1]='\0';
while(buffer[i]!='\0')
{
if(buffer[i]==' ')
{
j=i;
while(buffer[j]!='\0')
{
buffer[j]=buffer[j+1];
j++;
}
}
i++;
}
i=0;
j=0;
while(buffer[i]!='\0'){
if ((buffer[i]<='9')&&(buffer[i]>='0')&&(buffer[i]!='\0'))
{
p[0]=buffer[i];
result[j].amount=2;
strcpy(result[j].name,p);
while((buffer[i+1]<='9')&&(buffer[i+1]>='0')&&(buffer[i]!='\0'))
{
p[0]=buffer[i+1];
strcat(result[j].name,p);
i++;
}
}
else if(buffer[i]=='+'){
result[j].amount=0;
strcpy(result[j].name,"+");
}
else if(buffer[i]=='*'){
result[j].amount=1;
strcpy(result[j].name,"*");
}
else if(buffer[i]=='('){
result[j].amount=3;
strcpy(result[j].name,"(");
}
else if(buffer[i]==')'){
result[j].amount=3;
strcpy(result[j].name,")");
}
else printf("error\n");
i++;
j++;
}
printf("the reslut is :\n");
for(i=0;i<j;i++){
printf("\n(%d,%s)",result[i].amount,result[i].name);
}
}
4 个解决方案
#1
你是不是要返回经过你处理过的结构体数据呢?如果是这样,这跟C返回一个int型用法应该一样吧。
可以用 struct [name]*返回或者直接返回副本struct [name]
你用的方法就可以
可以用 struct [name]*返回或者直接返回副本struct [name]
你用的方法就可以
#2
你想把这整个数组返回吗?还是返回数组里边的一个啊?
如果返回数据,你需要用malloc分配空间,然后返回它的指针就行了
方法:
token *result=(token*)malloc(size*sizeof(token));//size为你要申请的记录个数
return result;//这是最后的返回,当然,你函数的返回类型也要改变一下;token *scan(...);
不能直接这样子:token result[10],如果你return result;的话,返回的将是一个野指针,它里边的内容可随时被程序刷掉而不存在了
如果返回数据,你需要用malloc分配空间,然后返回它的指针就行了
方法:
token *result=(token*)malloc(size*sizeof(token));//size为你要申请的记录个数
return result;//这是最后的返回,当然,你函数的返回类型也要改变一下;token *scan(...);
不能直接这样子:token result[10],如果你return result;的话,返回的将是一个野指针,它里边的内容可随时被程序刷掉而不存在了
#3
看了一下,既然已经printf("\n(%d,%s)",result[i].amount,result[i].name);想必楼主这个函数扫描完后就把结果输出了,不需要给调用者返回什么信息。就直接把函数改成void scan(char buffer[]),然后return就行了。如果要返回结构体,向楼上说的那样,用malloc分配一块内存,返回指针。
#4
帮UP了。
#1
你是不是要返回经过你处理过的结构体数据呢?如果是这样,这跟C返回一个int型用法应该一样吧。
可以用 struct [name]*返回或者直接返回副本struct [name]
你用的方法就可以
可以用 struct [name]*返回或者直接返回副本struct [name]
你用的方法就可以
#2
你想把这整个数组返回吗?还是返回数组里边的一个啊?
如果返回数据,你需要用malloc分配空间,然后返回它的指针就行了
方法:
token *result=(token*)malloc(size*sizeof(token));//size为你要申请的记录个数
return result;//这是最后的返回,当然,你函数的返回类型也要改变一下;token *scan(...);
不能直接这样子:token result[10],如果你return result;的话,返回的将是一个野指针,它里边的内容可随时被程序刷掉而不存在了
如果返回数据,你需要用malloc分配空间,然后返回它的指针就行了
方法:
token *result=(token*)malloc(size*sizeof(token));//size为你要申请的记录个数
return result;//这是最后的返回,当然,你函数的返回类型也要改变一下;token *scan(...);
不能直接这样子:token result[10],如果你return result;的话,返回的将是一个野指针,它里边的内容可随时被程序刷掉而不存在了
#3
看了一下,既然已经printf("\n(%d,%s)",result[i].amount,result[i].name);想必楼主这个函数扫描完后就把结果输出了,不需要给调用者返回什么信息。就直接把函数改成void scan(char buffer[]),然后return就行了。如果要返回结构体,向楼上说的那样,用malloc分配一块内存,返回指针。
#4
帮UP了。