我的代码旨在按“ a”,“ b” ...“ z”,“ aa” ..“ az”,“ aaa” ...“ aaz”等顺序创建一个计数器。
void incrementCounter(char *counter) {
int length = strlen(counter);
if (counter[length-1] == 'z') {
counter = realloc(counter, sizeof(char) * (length+2));
counter[length] = 'a';
counter[length+1] = '\0';
} else {
counter[length-1]++;
}
}
但是我在调用incrementCounter(“ a”);之后在第7行进行分段错误;
有关如何解决此问题或如何编写更好的计数器的任何帮助,它仅需为字符串且与之前的每个元素都不同?
带引号的字符串“ a”是字符串常量。修改它是不确定的行为。
尝试类似
a = malloc(2);
if (a) {
strcpy(a, "a");
incrementCounter(a);
}