如何使用C中的数组表示法访问char*?

Per*_*age 0 c

标题很简单.我想char *使用指针表示法访问字符串.我知道我可以使用derefencing运算符直接打印字符串.对于考试,我写了以下程序:

#include<stdio.h>

void printString(char * str){
    while(*str){
        printf("%c", *str);
        str++;
    }
}

int main(){
    char myString[] = "This is a String.";
    printString(myString);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序正确打印字符串.但是,如果我将我的printString功能更改为以下,我会得到垃圾:

void printString(char * str){
    int i = 0;
    while(*str){
        printf("%c", *(str+i));
        i++; str++;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?如何使用数组表示法访问字符串?

mer*_*011 5

首先,当您只应增加一个变量时,您将增加两个变量.

其次,您应该检查与打印相同的条件.

void printString(char * str){
    int i = 0;
    while(*(str+i)){
        printf("%c", *(str+i));
        i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

第三,根据您的问题标题,您需要数组表示法,如下所示,而不是您拥有的.

void printString(char * str){
    int i = 0;
    while(str[i]){
        printf("%c", str[i]);
        i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

第四,你可以用for循环使它更简洁.

void printString(char * str){
    int i;
    for(i = 0; str[i]; i++)
        printf("%c", str[i]);
}
Run Code Online (Sandbox Code Playgroud)