C中获取字符串的指针算法
我想获取字符数组的元素,但没有成功,问题是我只获取第一个和最后一个元素,除此之外,我的代码是:C中获取字符串的指针算法,c,pointers,pointer-arithmetic,C,Pointers,Pointer Arithmetic,我想获取字符数组的元素,但没有成功,问题是我只获取第一个和最后一个元素,除此之外,我的代码是: void getcharacters(char *cad) { int l; int *i; l=strlen(cad); for (i=&cad[0];i<&cad[l];i++){ printf("%c\n",*cad); } } void getcharacters(char*cad) { int l; int*i; l=斯特伦(cad); 对于(i=
void getcharacters(char *cad)
{
int l;
int *i;
l=strlen(cad);
for (i=&cad[0];i<&cad[l];i++){
printf("%c\n",*cad);
}
}
void getcharacters(char*cad)
{
int l;
int*i;
l=斯特伦(cad);
对于(i=&cad[0];i而言,int
的大小可以是char
大小的4倍,因此当您执行i++
时,实际上跳过了3个char
此外,您还可以打印出*cad
,而不是*i
要将更改i
修改为char*
并打印*i
而不是*cad
,您对所有printf使用相同的字符(*cad
或cad[0]
)。您需要的是在每次迭代中使用索引来获取下一个字符。我还需要是指向char的指针:
void getcharacters(char *cad)
{
int l;
char *i;
l=strlen(cad);
for (i=&cad[0];i<&cad[l];i++){
printf("%c\n", *i );
}
}
void getcharacters(char*cad)
{
int l;
char*i;
l=斯特伦(cad);
对于(i=&cad[0];i为什么不从第一个字符迭代到最后一个字符,并作为数组索引访问它们
int i;
int l=strlen(cad);
for (i=0;i<l;i++)
{
printf("%c\n",cad[i]);
}
inti;
int l=斯特伦(cad);
对于(i=0;i其他答案已经告诉了您为什么它不起作用,我想知道为什么您不只是迭代到空终止符
void getcharacters(char *cad)
{
char *i;
for (i = cad; *i; i++) {
printf("%c\n",*i);
}
}
i
不应该声明为char*i
吗?还有,为什么打印*cad?它从不从第一个字符开始更改。也许您打算打印*i
而不是*cad
?i
应该是*char
而不是*int
“int
可以大到4个char哈哈,我想说的是,char
不能保证与int
的大小相同(而且在大多数情况下,它们永远不会相同)@AlvinWong通常是sizeof(int)==4,而sizeof(char)==1,我相信