- 締切済み
strcpy関数について
C言語初心者です。 簡単な質問ですみません。 strlen関数 は文字列の長さを調べますよね?? この長さの意味がよくわかりません。 大きさと何が違うのでしょうか??
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
もしかすると、こんなコードを実行すると、 char 型配列の大きさ(sizeof()で取得するものと想定、合ってますか?)と strlen()で取得する長さとの違いを体感できるかもしれません。 #include <stdio.h> #include <string.h> int main(void) { char s[] = "abc\0ABCDE"; printf("sizeof(s)=%d\n", sizeof(s)); printf("strlen(s)=%d\n", strlen(s)); return 0; }
- php504
- ベストアンサー率42% (926/2160)
文字列の長さは文字数の意味だと思います。 strlenでは1バイト文字列しか扱えないのでマルチバイト文字やワイド文字では値が変になります。 ワイド文字用に文字列の長さを求める関数がある場合もあります。(Visual C++のwcslen( )など)
- Tacosan
- ベストアンサー率23% (3656/15482)
あなたのいう「文字列の大きさ」とは何ですか?
- NNori
- ベストアンサー率22% (377/1669)
C/C++言語のおける文字列の長さとは、'\0'までの長さ、いいかえれば'\0'が配列の何番目に相当するかです。 char buf[256]; strcpy( buf , "abc" ); こうするとbuf という文字型配列の0番目にa,1番目にb , 2番目に c ,3番目に '\0' が入ります。 したがって strlen( buf ) とすると 3 が返ります。 一方上記の例でいくと buf の大きさは、256 です。 まぁ、古い言語ですからね、「大きさ」があるのは仕方ないんですよ。