我有这些功能:
void mon_strlen(char *s){
printf("Contenue: %c\n",*s);
s++; //here
printf("Contenue: %c\n",*s);
system("PAUSE");
}
int main()
{
char str[10]="Hello";
char *s;
s=str[0];
mon_strlen(&s);
system("PAUSE");
return 0;
}
如何在函数s
中增加指针mon_strlen
的内存位置以进行打印:
Contenue: H
Contenue: e
或我的逻辑错了?
答案 0 :(得分:3)
在您的代码中,更改
s=str[0];
到
s=str;
或
s=&str[0];
并将mon_strlen()
称为
mon_strlen(s);
答案 1 :(得分:0)
要在main()
中进行更改,您需要将指针传递给指针,如此
void mon_strlen(char **s) {
char *ptr;
if (s == NULL)
return;
ptr = *s;
if (ptr == NULL)
return;
printf("Contenue: %c\n", *ptr);
ptr = (*s)++; //here
printf("Contenue: %c\n", *ptr);
system("PAUSE");
}
main()
中的来电就像您的mon_strlen()
函数有此签名一样
void mon_strlen(char **s)
如果你启用了警告,你的编译器会警告你。
在main()
中你需要像这样传递str
mon_strlen(&str);