我正在使用必须指向指针的方法。我想知道如何在这个变量中获取单个char值?例如:
void spacer(char **ptr) {
int i;
for(i = 0; **ptr[i] != ' '; i++) {
printf("Is not space");
}
}
我不确定如何在不出现编译错误或分段错误的情况下完成此操作。
答案 0 :(得分:1)
假设ptr
点有效内存而*ptr
也有效,那么(*ptr)[i]
会获得char
。
答案 1 :(得分:1)
如果ptr只是一个双层指针,你可以移动它来制作一个局部变量,使其更简单。
POST /posts/_search
{
"size": 50,
"query": {
"bool": {
"must": {
"match": {
"body": "some text"
}
},
"filter": [
{
"terms": {
"user_id": [ 1, 2, 3, 4 ]
}
}
]
}
}
}
然后稍后像普通字符串一样访问它。
char* str = *ptr;
还要注意不要离开分配的缓冲区。您需要知道长度或注意空终止符。
答案 2 :(得分:1)
ptr是指向char
指针的指针,因此取消引用它一次将指向一个指针。引用它两次将定位char
。
因此**ptr
将为您提供第一个字符。循环使用以下表示法的字符:
*(*ptr + i)
,相当于(*ptr)[i]
答案 3 :(得分:-1)
你可以试试这个:
char *temp=NULL;
int i;
temp=(char *)malloc(strlen(*ptr));
memset(temp,'\0',strlen(*ptr)+1);
for(i=0;i<strlen(*ptr)+1;i++)
{
if(temp[i] != 32)
printf("not space!\n");
}