2017-11-05 7 views
-1

で文字列の長さを取得します。私は<string.h>を使用せずに文字列を治療するためのいくつかの機能をプログラミングだ、と私はこれを行うことにより、文字列の長さを取得しています:その最後のNUL要素

char *str= "Getting the length of this"; 
int c; 
for (c= 0; str[c]!='\0'; c++); 

cは私の文字列の長さですので、文字列の処理がはるかに楽になりますが、これが正しいかどうかは不思議です(これは正しく動作しますが、これを行うには適切な方法ではないかもしれません)。

+3

を質問は何ですか? –

+3

あなたのコードは正しい –

+2

'str'は文字列リテラル(' str'が[の最初の文字]を指しています)の何らかの変更が未定義の動作を与えるので 'const char *'と宣言する方が良いでしょう。それを超えて、あなたのコードは正しいですが、C標準ライブラリには、 ''で宣言されている 'strlen()'と全く同じことをする関数があります。 – Peter

答えて

4

...これが正しい

あるかしらはい、それは正しいです。読みやすさのために

私が希望:

char *str= "Getting the length of this"; 
int c = 0; 
while(str[c]) c++; 

が、それは単に好みの問題です。

intを文字列の長さに使用することは珍しいことに注意してください。 strlen機能がライブラリ機能を模倣するので、size_tを返し、あなたもsize_tのように使用する必要があります。

size_t my_strlen(const char* s) 
{ 
    size_t c = 0; 
    while(s[c]) c++; 
    return c; 
} 


char *str= "Getting the length of this"; 
size_t c = my_strlen(str); 
+1

'const'を使うとより良いでしょう –

+0

while(s [c])C++; sがNULLの場合はどうなりますか? –

+2

@potato - 契約では、NULLポインタで 'strlen'を呼び出すことはできません。これは多くの文字列関数に当てはまります。 ** **あなたがするなら、あなたは困っています... – 4386427

関連する問題