如何从指向C的指针中获取单个char?

时间:2016-03-14 06:33:25

标签: c pointers char

我正在使用必须指向指针的方法。我想知道如何在这个变量中获取单个char值?例如:

void spacer(char **ptr) {

    int i;
    for(i = 0; **ptr[i] != ' '; i++) {

        printf("Is not space");

    }
}

我不确定如何在不出现编译错误或分段错误的情况下完成此操作。

4 个答案:

答案 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"); 
}