C言語関係掲示板

過去ログ

No.91. 継続行


文字列の初期値の設定で文字数が長い場合(たとえば100文字)
1行で定義できず、継続行として定義する方法が分かりません。

char data[100]="abcdefg......

上記のように1次元文字列として定義したいのですが1行で
定義しきれない場合複数行に渡っての定義方法(継続行)が分かりません。
宜しくお願いします。


masaさん、今晩は。

>文字列の初期値の設定で文字数が長い場合(たとえば100文字)
>1行で定義できず、継続行として定義する方法が分かりません。

文字列に関わらず、「\」で接続できます。コンパイラは行末に「\」が
あると、その「\」と次の改行を無視します。

ただ、
        char    str[] = "abcdefghijklmnopqrstuvwxyz\
abcdefghijklmnopqrstuvwxyz";

のように次の行を1カラム目から始めなければならないので美しくは
無いですけど。


>文字列の初期値の設定で文字数が長い場合(たとえば100文字)
>1行で定義できず、継続行として定義する方法が分かりません。
>
>char data[100]="abcdefg......
>
>上記のように1次元文字列として定義したいのですが1行で
>定義しきれない場合複数行に渡っての定義方法(継続行)が分かりません。
>宜しくお願いします。

char data[] = "適当な文字列"
"適当な文字列"
"適当な文字列";

上記のように風に二重引用符で囲めば大丈夫です。
printf()などで表示する文字列が長くなった場合でも同じように使えます。
あとは、char data[]って書けば配列の要素は書かなくても文字列の
長さ分確保されます。


>char data[] = "適当な文字列"
> "適当な文字列"
> "適当な文字列";
>
>上記のように風に二重引用符で囲めば大丈夫です。

そうですね。こちらの方が実用的ですね。


#include <stdio.h>
int main(void)
{
        char    str[] = "abcdefghijklmnopqrstuvwxyz"
                        "abcdefghijklmnopqrstuvwxyz"
                        "abcdefghijklmnopqrstuvwxyz";

        puts(str);
        puts("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
             "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
             "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        
        return(0);
}


ともじさん、shuさん。有り難うございました。

文字列データのなかに直接"\"を指定するとは
考えもつきませんでした。

char str[]="abcd....."\ などと
一旦文字列を閉じて継続する事しか頭になかったもので
成る程なーと思いました。

shuさんの
char str[]="abcd....."
"jkl......";
には、ビックリしました。
見た目は一次元文字配列の様相をしていますが
継続行としての定義(,や\など)がないのに
2行目以降が文字配列として捉えられるのかと
いうことですが、確認してみたところなんと
上手くいったではありませんか。
あれやこれやとテストして悩んだのは、何なんだ!
という感じです。

今回は継続行の定義ということで私自身の固定観念
に囚われすぎていたように思います。
有り難うございました。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.01.11
Copyright(c) 2000-2002 TOMOJI All Rights Reserved