私はこの方法で文字列を生成しようとしています:
a
b
.
.
z
ああ
ab
.
.
グーグー
.
.
.
.
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));
}