标题很简单.我想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)
为什么会这样?如何使用数组表示法访问字符串?
首先,当您只应增加一个变量时,您将增加两个变量.
其次,您应该检查与打印相同的条件.
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)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |