如何增加字符指针?

时间:2018-07-18 04:50:38

标签: c++ c pointers

代码给了我错误:增量操作数需要左值

但是如果我将str加1,它必须指向字符串中的下一个字符。

#include <stdio.h>
#include <stdlib.h>


int main()
{
    char str[50];
    scanf("%s", str);
    while(*str != 0)
    {
        printf("%c", *str);
        str++;
    }
    return 0;
}

3 个答案:

答案 0 :(得分:3)

str不是指针,而是数组。在许多情况下,数组会衰减为指向其第一个元素的指针,但这并不能使其本身成为指针。

答案 1 :(得分:2)

str是一个50个元素的char数组,而不是一个指针。在大多数情况下,数组会衰减(转换为)指向第一个元素的指针,但是除非修改该指针,否则您不能修改该衰减的指针。

#include <stdio.h>
#include <stdlib.h>


int main()
{
    char str[50];
    char* ptr = str;
    scanf("%s", str);
    while(*ptr != 0)
    {
        printf("%c", *ptr);
        ptr++;
    }
    return 0;
}

正如Ulrich Eckhardt所指出的那样,一种更好的实现方法是使用for循环:

#include <stdio.h>
#include <stdlib.h>


int main()
{
    char str[50];
    scanf("%s", str);
    for(char* ptr = str; *ptr != 0; ++ptr)
    {
        printf("%c", *ptr);
    }
    return 0;
}

这样更清楚,ptr的范围限于循环,这是很好的,因为我们以后不需要它。

答案 2 :(得分:-1)

您可以简单地将其用作数组

int i;
for (i=0; i<sizeof(str); i++)
{
        printf("%c", str[i]);
}