【发布时间】:2021-12-30 20:39:54
【问题描述】:
我有以下代码:
#include <stdio.h>
void recursion(char *ptr) {
if(*ptr!='J') recursion(ptr++);
printf("%c",*ptr);
}
void main() {
char v[]="!zenaJ";
char *ptr=v;
recursion(ptr);
}
我想退货 Janez!通过递归函数。编译时我没有任何错误。当我运行程序时,我收到错误“分段错误(核心转储)”。我做错了什么?
【问题讨论】:
-
你希望
recursion(ptr++);做什么? -
增加指针并转到下一个字符。当我不使用递归时,它实际上可以工作。
-
你知道
ptr++和++ptr之间非常重要的区别吗? -
格式字符串
"%c%"无效。我猜你的意思是"%c"。 -
感谢您非常有建设性的回答!现在我知道我做错了什么。
标签: c recursion c-strings post-increment