【发布时间】:2014-05-27 08:06:03
【问题描述】:
我必须在递归函数中反转一个字符串,但我不能使用循环或 strlen 来查找字符串的结尾在哪里。然后我必须将反转的字符串传递回 main 并将其复制到一个新文件中。到目前为止,这是我所拥有的:
int reverse(char *str, char *strnew, int p)
{
char temp=str[p];
if(temp=='\0' || temp=='\n')
{
strnew=str;
return p;
}
else
{
reverse(str++, strnew, ++p);
p--;
strnew[p]=str[p];
printf("strnew: %c\n", strnew[p]);
return 0;
}
}
int main(int argc, char *argv[])
{
FILE *fp;
char buffer[100];
char newstr[100];
int pointer=0;
fp=fopen("lab8.txt", "r");
if(fp==NULL)
{
printf("Error opening file\n");
return 0;
}
(fgets(buffer, 100, fp));
reverse(buffer, newstr, pointer);
printf("newstr: %s\n", newstr);
FILE *fp2=fopen("lab8.2.txt", "w");
fputs(newstr, fp2);
fclose(fp);
fclose(fp2);
return 0;
}
我无法理解如何反转字符串。我发现空字符在哪里使用 p,但是如何将字符串向后复制到新字符串上?
【问题讨论】:
-
请谷歌搜索。这个问题在过去的 2-3 周内出现了好几次,所以想必你同学得到的答案对你也有好处。
标签: c string recursion reverse