拆分字符串并存储在 C 中的数组或指针中
Spliting string and storing in array or pointer in C
我在一个小项目中工作,我在一个结构中存储了一些名称(例如: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 但没有:(。
我在寻找解决方案时遇到的一些错误:
[警告] 赋值从指针生成整数而不进行强制转换;
[警告] 传递 'strcpy' 的参数 1 从不进行强制转换的整数生成指针。
希望你能帮助我,
谢谢!
在 main
中,vetLiga
从未被赋值,但也许您缩写了代码。
在 separarEquipas
中,您有以下内容:
char *str;
strcpy(str, p[i].eqLiga)
因此您正在将字符串复制到内存中的随机位置。
您没有 post 完整代码,因此据我所知 vetLiga
在 separarEquipas
中变为 p
未初始化。
另一个问题是您尝试在 strcpy
中使用 str
而未为其分配内存。你需要这样做
char *str = malloc( max_number_of_characters_in_str );
然后这里:
vet[a++] = ptr; //here I'm trying to store each word in a position of the array
你完全按照你在评论中说的做。但是,您不能将单个字符的单词存储到 space 中。 vet
需要是一个二维数组,或者如果你想要一个指向 char 的指针数组。
如果您需要更多帮助,请包括整个程序。
我在一个小项目中工作,我在一个结构中存储了一些名称(例如: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 但没有:(。
我在寻找解决方案时遇到的一些错误:
[警告] 赋值从指针生成整数而不进行强制转换; [警告] 传递 'strcpy' 的参数 1 从不进行强制转换的整数生成指针。
希望你能帮助我, 谢谢!
在 main
中,vetLiga
从未被赋值,但也许您缩写了代码。
在 separarEquipas
中,您有以下内容:
char *str;
strcpy(str, p[i].eqLiga)
因此您正在将字符串复制到内存中的随机位置。
您没有 post 完整代码,因此据我所知 vetLiga
在 separarEquipas
中变为 p
未初始化。
另一个问题是您尝试在 strcpy
中使用 str
而未为其分配内存。你需要这样做
char *str = malloc( max_number_of_characters_in_str );
然后这里:
vet[a++] = ptr; //here I'm trying to store each word in a position of the array
你完全按照你在评论中说的做。但是,您不能将单个字符的单词存储到 space 中。 vet
需要是一个二维数组,或者如果你想要一个指向 char 的指针数组。
如果您需要更多帮助,请包括整个程序。