我一直在尝试以这种方式生成字符串:
一个
b
.
.
z
啊
抗体
.
.
Z Z
.
.
.
.
zzzz
我想知道为什么当它到达'yz'时会提示分段错误(核心转储)错误。我知道我的代码没有涵盖所有可能的字符串,例如“zb”或“zc”,但这还不是重点,我想知道为什么会出现这个错误。如您所见,我不是编码大师,因此请尝试清楚地解释一下。谢谢 :)
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
void move_positions (char s[]);
int main (int argc, char *argv[])
{
char s[28];
s[0] = ' ';
s[1] = '\0';
int a = 0;
for(int r = 'a'; r <= 'z'; r++)
{
for(int t ='a';t <='z'; t++)
{
for(int u = 'a';u <= 'z'; u++)
{
for(int y = 'a'; y <= 'z'; y++)
{
s[a] = (char)y;
printf ("%s\n", s);
if (s[0] == 'z')
{
move_positions(s);
a++;
}
}
s[a-1] = (char)u;
}
s[a-2] = (char)t;
}
s[a-3] = (char)r;
}
return 0;
}
void move_positions (char s[])
{
char z[28];
z[0] = ' ';
z[1] = '\0';
strcpy(s, strcat(z, s));
}