我需要用 C 语言编写一个问题,它将一个字符串添加到一个字符串等(例如“5”字符串 - 它需要读取“vbvbvbvbvb”5 次。)但是它不起作用?请帮忙!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s[80];
int len;
int counter = 0;
char* repeat(char* s, int n) {
if (n > 0) {
if (s[len] == n) {
counter++;
}
len--;
repeat(s, (n++));
}
return s;
}
int main(void) {
printf("%s", repeat("vb", 5));
fflush(stdout);
return EXIT_SUCCESS;
}
最佳答案
您正在尝试写入“vb”
的末尾,它是常量池中的字符串。不要那样做。分配一个 strlen(s) * n + 1
长的字符串并将其写入其中。
您的基本情况可能是错误的。基本情况可能应该是当 n == 0
时,即空字符串(除了终止 NUL 之外没有附加任何内容,如下所示)是合适的。
您的递归步骤(n++)
可能应该是(n - 1)
以倒计时到该基本情况。正如所写,后增量执行无用的分配并使用相同的 n
值进行递归。
我不知道 counter
和 len
应该做什么,但它们对我来说看起来多余。 len
未初始化,因此 s[len]
具有未定义的行为。
写入n
个副本后,您需要在末尾添加终止NUL('\0'
),以便printf
和类似的函数可以识别结束。
关于c - 用C中的递归函数添加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24087653/