char *filedについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tama

char *filedについて

#1

投稿記事 by tama » 16年前

こんにちは。
C言語は初心者です。WindowsのVistaを使っています。コンパイラはBorladです。

宣言文で次のように
char *field = "%s\t%s\t%s\t%s\t%s";
とあったのですが、"%s\t%s\t%s\t%s\t%s"の部分が分かりません。
ポインタfieldを宣言して、"%s\t%s\t%s\t%s\t%s"を代入する?

よろしければ、説明お願いします。

御津凪

Re:char *filedについて

#2

投稿記事 by 御津凪 » 16年前

> ポインタfieldを宣言して、"%s\t%s\t%s\t%s\t%s"を代入する?

それで正しいです。
"%s\t%s\t%s\t%s\t%s" の部分は文字列で、
中に書かれている暗号みたいな文字は printf 関数などで使われる書式文字と、エスケープシーケンスですね。

zwi

Re:char *filedについて

#3

投稿記事 by zwi » 16年前

正確に書くと
ポインタfieldを宣言して、文字列"%s\t%s\t%s\t%s\t%s"の先頭ポインタを代入するですかね。

non

Re:char *filedについて

#4

投稿記事 by non » 16年前

"%s\t%s\t%s\t%s\t%s"という文字列がメモリ上のどこか(恐らく静的領域)に用意されて、
その先頭のアドレスがfieldという変数に代入される。アドレスが入る変数をポインタという。
ポインタには指すという意味があるので、ポインタfieldは文字列"%s\t%s\t%s\t%s\t%s"の
先頭アドレスを指していると考えるとわかりやすい。

Ma

Re:char *filedについて

#5

投稿記事 by Ma » 16年前

まだまだ初心者の自分からの説明ですが、

%s は、書式文字で、
\t は、エスケープシーケンスです。

%s は、文字列。
\t は、タブを意味します。(他には、\n で改行など。)

printf(field,"te","st","in","g","now");

とすれば、
出力には、
te	st	in	g	now
と出力されます。

tama

Re:char *filedについて

#6

投稿記事 by tama » 16年前

皆様、解答ありがとうございました。
ポインタfieldには先頭アドレスが入るのですね。

%s,%tはprintf()関数の中で見かけるのですが、
char *field = "%s%t…"; ----①
は初めて見ました。
printf()関数の場合は、%sは文字列を表示しますよね。
①の場合だと%sや%tは何をしているのでしょうか?

zwi

Re:char *filedについて

#7

投稿記事 by zwi » 16年前

%tではなく\tですね。
そのほかのことについては、Maさんが解説されている通りです。

閉鎖

“C言語何でも質問掲示板” へ戻る