2012-03-20 16 views
-3

、私はstring aがあるので、この私自身のstrcpy関数は、学習技術として

char * mystrcpy(char *a, char *b){ 
a = b; 
return a; 

} 

で来ている

char * mystrcpy(char *a, char *b); 
// string copy. destroys a but not b. 
// identical to strcpy in <string.h> 
// running time O(mystrlen(b)) 

に次の文字列関数の私自身のコピーを作成することとしていますメモリ内のランダムなチャック私はちょうどstring bに割り当てることを考えています...私の解釈は正しいですか?

+4

少なくとも**試してみる必要があります**。私たちはあなたの宿題をするためだけではありません。あなたがうまくいくかもしれないと思ういくつかのコードを書いて、あなたが立ち往生するならば戻ってきて特定の質問をしてください。 –

+0

@GrahamBorland:あなたのコメントは一般的に真実ですが、OPは彼が何をしようとしているのかを明確にし、それに関する特定の質問をします。彼は誰かに彼の宿題をするよう求めていない。 IMOそれは有効な質問です:\ – amit

+3

あなたの宿題[あなたのM.O.](http://stackoverflow.com/questions/9771624/introduction-to-arrays)にこのアプローチをしないでください。自分で質問に答えてみてください。あなたが試したことを私たちに教えてください。それが完全にそして全く間違っていても。 – Bart

答えて

2

文字列の特定のchar [インデックスi]にアクセスするには、配列のようにa[i]を使用します。 [Cでは、文字列は実際にはchar sの配列であることを覚えています]。

文字列の最後を示す "'\0' char"が表示されるまで、文字列を反復処理する必要があります。

はい、operator<の文字と比較すると、アスキー値で比較しています。これはおそらく必要なものです。

+0

私は 'char * u =" bbcdef ";を持っています。もし私が 'b'にアクセスしたいのであれば、私は[0]ですか? – Thatdude1

+0

@Beginnernato:はい、あなたは 'u [0]'を使って最初の 'b'を得ることができます。ここの文字列は文字列リテラルなので、 'u [0]'しか読むことができず、それを変更することはできません。 – amit

+0

@Beginnernato '* b!= '\ 0'' [ループの停止状態で]配列の最初の要素のみをチェックすると、おそらく 'b [i]!= '\ 0''を探しているでしょう。また、ループの最初のチェックで '(i> strlen(a)'あなたは '<='が必要です。)配列[と文字列]は0ではなく1から始まっていることを忘れないでください。 – amit

関連する問題