我想得到一个字符数组的元素,但根本没有成功,问题是我只得到第一个和最后一个元素而已,我的代码是:
void getcharacters(char *cad)
{
int l;
int *i;
l=strlen(cad);
for (i=&cad[0];i<&cad[l];i++){
printf("%c\n",*cad);
}
}
任何帮助? 感谢
答案 0 :(得分:4)
int
的大小可以是char
大小的4倍,所以当你执行i++
时,你实际上是在跳过3个字符。
此外,您打印*cad
而不是*i
。
要将更改i
修改为char*
并打印*i
而不是*cad
答案 1 :(得分:2)
您对所有printf使用相同的字符(*cad
或cad[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);
}
}