締切済み

c言語の文字列出力

  • 困ってます
  • 質問No.9428308
  • 閲覧数136
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 94% (18/19)

プログラミング超初心者です
サイトで文字列の出力について調べていたところ
c言語は変数に文字列を代入することができないのでstrcpy関数を使い以下のようにするとあります
char s[5];
strcpy(s, "ABCDE");
printf("%s\n", s);

ところが他のサイトでは以下のように説明しています
char s[5] = "ABCDE";
printf("%s\n", s);

明らかに後者の方が簡単で良いように見えるのですが違いはなんですか?

あと、文字列の配列の指定?の[5]の部分なのですが
数字を記載しているところがほとんどですが省略しているところも有ります
どんな文字列が入るかわからない場合もありますがここは省略しない方が良いのですか?

よろしくお願いします

回答 (全3件)

  • 回答No.3

ベストアンサー率 28% (1336/4687)

コンピューター カテゴリマスター
前者はstrcpy()の使い方の簡単なサンプルだからかと。
strcpy()の使い方のサンプルなのにstrcpy()が使われていなかったら意味ないでしょ?

>数字を記載しているところがほとんどですが省略しているところも有ります
どんな文字列が入るかわからない場合もありますがここは省略しない方が良いのですか?

>char s[] = "ABCDE";

のように変数定義の段階でABCDEと'\0'で6バイトと明確で、そのバイト数で良い場合には省略できます(末尾の'\0'が不要な場合には省略できません)。
質問での前者のように必要なサイズが不明の場合には省略できません。
補足コメント
ashitanotenki11

お礼率 94% (18/19)

よく読んだらcharの配列のところにも同じ説明がありました
strcpy()の説明だったようですね
Googleで検索して出てきたのをそのまま読んでたチェケラッチョですよ!
投稿日時 - 2018-02-12 17:30:27
お礼コメント
ashitanotenki11

お礼率 94% (18/19)

strcpy()の使い方の説明ではなく文字列の出力の説明でしたね
あとscanf()などから取り込む場合は何文字入るか解らないけどそういう場合はどうするのですか?

とにかくサンキューチェケラッチョです!
投稿日時 - 2018-02-12 17:20:27
  • 回答No.2

ベストアンサー率 42% (1475/3445)

後者はコンパイル時に配列の要素を初期化している。
前者は実行時に代入している。
---
配列の要素数を指定しない場合は自動的に要素数を決めてくれる。
お礼コメント
ashitanotenki11

お礼率 94% (18/19)

どっちが効率が良いとかあるのですかね?
自動で決めてくれるのにわざわざ指定する意味がC言語初めて2日の人間には理解できてないんですよね
このような小学生の国語の問題でも不完全でマルが貰えないような解答ではバッテンですね

でもとにかくサンキューチェケラッチョですよ!
投稿日時 - 2018-02-12 17:24:36
  • 回答No.1

ベストアンサー率 24% (616/2509)

まず、質問に書かれているC言語のソースは間違っています。

char s[5];ではなく、char s[6]; にすべきです。6以上で、char s[20];としてもいいですけどね。
このままだと、データ領域外への書き込みが発生します。

>>明らかに後者の方が簡単で良いように見えるのですが違いはなんですか?

やっていることは同じと考えていいと思います。
ソースを簡単に書けるように、後者の書き方も認められるように文法を拡張したのだと思いますね。

>>あと、文字列の配列の指定?の[5]の部分なのですが
数字を記載しているところがほとんどですが省略しているところも有ります

これも同じく、「できるだけ楽にソース書きたい」っていう要望に合わせて、省略もOKな文法に拡張したのだと思います。
お礼コメント
ashitanotenki11

お礼率 94% (18/19)

数字を[5]にしたのは無知な私の間違いです\0が入るから6なのですよね
このような間違いを起こさないためにも[]の方が良かったわけですね
サンキューチェケラッチョです!
投稿日時 - 2018-02-12 15:11:46
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ