文字列のサブセットを逆転させるCプログラムを書いています。私は出力を得ることができません。Cプログラム内の文字配列のサブセット
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
int i,j,n,k, size;
char a[10]="aabbcc";
i=0;
n=strlen(a);
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
for(k=i;k<j+1;k++)
{
printf("%c",a[k]);
size = strlen(a);
reverse(a[k], 0, size - 1);
printf("The string after reversing is: %s\n", a);
}
printf("\n");
}
}
getch();
}
void reverse(char str1[], int index, int size)
{
char temp;
temp = str1[index];
str1[index] = str1[size - index];
str1[size - index] = temp;
if (index == size/2)
{
return;
}
reverse(str1, index + 1, size);
}
私の入力が「aabbcc」であるとします。私の部分文字列はa、aa、aabb、....などになります。 しかし、文字列の逆転は、私のinout単語 "aabbcc"に対してのみ起こっています。指定された文字列のすべての部分文字列を逆順にするコードを取得するにはどうすればよいですか。
これは警告なしでコンパイルするべきではありません。 'reverse()'の最初の引数は配列ですが、 'reverse(a [k]、0、size-1)'は最初の引数として単一の 'char'を渡します。 – Barmar
部分文字列を処理する場合は、一時配列にコピーする必要があります。さもなければ、あなたは元の文字列を変更しています、そして、将来のループはオリジナルを取り戻すことができません。 – Barmar
はい!しかし、それを逆転させるために現在の部分文字列をどのように渡しますか?私はそれを働かせるために何を変えるべきですか? –