私は、私たちの生活の中で使用される文字列は、今日私が説明するために、あなたに少しの知識ポイントを伝えたいと考えています:
- 文字列定数と文字配列
- 文字列定数:CHAR *編曲、4つのバイトを占めたが、読み取り専用に変更することはできません。同じ値に初期化文字列定数の複数の後、それらは同じメモリ空間を指し、それは等しくなります。
- 文字の配列:チャーARR []、数バイトとは、文字配列の複数が同じ値に初期化されている場合、いくつかのバイトは、「\ 0」、1バイト、変更することができ、システムは、各空間に割り当てられる割り当てそれは、同じメモリ空間を指していません。代替ソリューションスペース
文字列領域を交換2.
- 問題の説明:「我々は20アール%%20happy」出力、置換文字列のそれぞれは、例えば「20%」で、「我々は満足している」と入力し、実現される機能を確認します。
- 問題分析:被験者は質問の文字列の後に処理されたビューの正式な観点から、長くなります、私はバックスペース、最初の動きの背後にある数が、そう、あまりにも複雑で、スペースの無駄を来たいと思い始めてこれは、いくつかの要素が二回移動させるだろう、かつての後方思考の代替品です。それを別の考えを置く私たちは、それは、以前からのデータを交換するため、すべての数字の後に一度だけ移動する、のは、マップの特定のを見てみましょうです
# include <stdio.h>
# include <string.h>
void replace(char *a,int len)
{
int p=0;
int q=0;
int count=0;
for(int i=0;a[i]!='\0';i++)
{
if(a[i]==' ')
{
count++;
}
p++;
}
q=p+2*count;
while(p!=q)
{
if(a[p]==' ')
{
p--;
a[q--]='0';
a[q--]='2';
a[q--]='%';
}
else
{
a[q]=a[p];
p--;
q--;
}
}
}
void show(char *a,int len)
{
for(int i=0;a[i]!='\0';i++)
{
printf("%c ",a[i]);
}
}
int main()
{
char a[100]="we are happy.";
show(a,100);
printf("\n");
replace(a,100);
show(a,100);
}
結果:
さあ!!!