C 在字符指针数组中存储字符串时出错
我知道这个问题听起来很傻,但不知怎么的,我发现自己陷入困境,需要帮助。我有一个C 在字符指针数组中存储字符串时出错,c,C,我知道这个问题听起来很傻,但不知怎么的,我发现自己陷入困境,需要帮助。我有一个char*变量char*address=“/a/asdasd/c/sdfsdf/adsd”
char*
变量char*address=“/a/asdasd/c/sdfsdf/adsd”我声明了一个char指针数组char*store[5]代码>。我试图通过跟踪斜杠(/
)来划分变量地址
中的内容,并尝试通过执行以下操作将每个部分存储到char指针变量存储
char* store[5];
char* address="/a/asdasd/c/sdfsdf/adsd";
int k=0;
int j=0;
char* b=NULL;
for(int i=0;i<5;i++)
{
if(b==0)
{
b=strchr(address,'/');
}
else
{
b=strchr(b,'/');
}
j=b-address;
strncpy(store[i],address+k,j-k);
k=j;
}
如果要复制指针,则不应调用strncpy()
,因为这会复制字符
你想要:
store[i] = address + (j - k);
假设address+(j-k)
是部件所需的起点。如果要复制指针,不应该调用strncpy()
,因为这样会复制字符
char *store[5]
你想要:
store[i] = address + (j - k);
假设地址+(j-k)
是零件所需的起点
char *store[5]
这只是一个字符指针数组。要在该数组的每个元素中存储字符串,需要malloc内存并将其分配给相应的指针
例如,您可以将代码更改为
store[i] = malloc ((j-k)+ 1); // +1 is for the null terminator. Pls check return value of malloc also.
strncpy(store[i],address+k,j-k);
这只是一个字符指针数组。要在该数组的每个元素中存储字符串,需要malloc内存并将其分配给相应的指针
例如,您可以将代码更改为
store[i] = malloc ((j-k)+ 1); // +1 is for the null terminator. Pls check return value of malloc also.
strncpy(store[i],address+k,j-k);
如果您不想拥有字符串标记的副本,如果您只想保留指针,那么只需将地址存储在store[i]中,正如@unwind指出的那样。或者,您也可以探索strtok()。唯一需要考虑的是,您需要有单独的数组来根据代码保持字符串的每个长度。希望这有帮助。如果您不想拥有字符串标记的副本,如果您只想保留指针,那么只需将地址存储在store[i]中,正如@unwind所指出的那样。或者,您也可以探索strtok()。唯一需要考虑的是,您需要有单独的数组来根据代码保持字符串的每个长度。希望这有帮助。是否应该有intb=0代码>某处?那a
呢<代码>存储
?不,应该有char*b=NULL。我编辑了它。谢谢。还有两个未声明的变量。你的代码块应该是独立的,把部分声明隐藏在问题的文本中不是一个好主意。我编辑了您的代码以添加那些丢失的声明。只是一个建议-否则编译/运行代码会很困难。我的错,谢谢你的建议代码>某处?那a
呢<代码>存储
?不,应该有char*b=NULL。我编辑了它。谢谢。还有两个未声明的变量。你的代码块应该是独立的,把部分声明隐藏在问题的文本中不是一个好主意。我编辑了您的代码以添加那些丢失的声明。只是一个建议-否则它会使编译/运行代码变得困难。我的错,谢谢你的建议。我知道使用malloc,但我想避免它,因为这段代码将用于我们不使用malloc的项目,因为内存问题。没有其他方法可以解决它吗?你能把它做成一个像char store[5][100]那样的固定数组吗?在strncpy中,将第三个参数传递为(100-1)=99?我知道如何使用malloc,但我想避免它,因为这段代码将用于由于内存问题而不使用malloc的项目。没有其他方法可以解决它吗?你能把它做成一个像char store[5][100]那样的固定数组吗?在strncpy中,将第三个参数传递为(100-1)=99?