文字列の提供を受賞

私は、私たちの生活の中で使用される文字列は、今日私が説明するために、あなたに少しの知識ポイントを伝えたいと考えています:

  1. 文字列定数と文字配列
  •  文字列定数: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);
}

結果:

さあ!

公開された54元の記事 ウォンの賞賛8 ビュー5324

おすすめ

転載: blog.csdn.net/qq_43411555/article/details/90274436