【发布时间】:2020-12-31 18:58:16
【问题描述】:
我正在做一个小项目,我有一些名称存储在一个结构中(例如:Name1,Name2),我需要拆分每个名称并将其存储在一个数组中,这样我就可以分别调用每个名称(printf ("%s", vet[1]) 应该只打印 "Name2")。
这是我的代码:
int main(){
char temp[100];
LIGA *vetLiga;
int reference;
int quantiy;
separarEquipas(vetLiga, temp, reference, quantity);
}
int separarEquipas(LIGA *p, char vet[100], int vPesquisa, int n){
int i, nr, a;
char *ptr;
char *str;
for(i=0;i<n;i++){
if (p->id == vPesquisa){
nr = p->nrEquipas;
strcpy(str, p[i].eqLiga);
ptr = strtok(str, " ,");
while(ptr != NULL)
{
vet[a++] = ptr; //here I'm trying to store each word in a position of the array
ptr = strtok(NULL, " ,");
}
}
p++;
}
return nr;
}
问题在于我尝试将每个令牌存储在数组中但它不断使终端崩溃。我尝试了不同的方式,例如使用 strcpy 和 memcpy,正如其他帖子所建议的那样,但没有:(。
我在尝试寻找解决方案时遇到的一些错误:
[Warning] 赋值从指针中生成整数而不进行强制转换; [警告] 传递 'strcpy' 的参数 1 使指针从整数而不进行强制转换。
希望你能帮助我, 谢谢!
【问题讨论】:
-
这可能是因为
p[i].eqLiga不是指针类型,仔细检查LIGA类型 -
您使用
str而不为其分配内存
标签: arrays c pointers storage strtok