用于获取字符串的C中的指针算术

时间:2012-12-13 03:38:38

标签: 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);
 }
}

任何帮助? 感谢

4 个答案:

答案 0 :(得分:4)

int的大小可以是char大小的4倍,所以当你执行i++时,你实际上是在跳过3个字符。

此外,您打印*cad而不是*i

要将更改i修改为char*并打印*i而不是*cad

答案 1 :(得分:2)

您对所有printf使用相同的字符(*cadcad[0])。您需要的是使用索引来获取每次迭代中的下一个char。另外我需要成为char的指针:

void getcharacters(char *cad)
{
 int l;
 char *i;
 l=strlen(cad);
 for (i=&cad[0];i<&cad[l];i++){
     printf("%c\n", *i );
 }
}

答案 2 :(得分:2)

为什么不从第一个字符迭代到最后一个字符并将它们作为数组索引

进行访问
int i;
int l=strlen(cad);
for (i=0;i<l;i++)
{
  printf("%c\n",cad[i]);
}

答案 3 :(得分:1)

其他答案告诉你为什么它不起作用,我想知道为什么你不只是迭代直到空终止符?

void getcharacters(char *cad)
{
 char *i;
 for (i = cad; *i; i++) {
     printf("%c\n",*i);
 }
}