こんにちは。
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"を代入する?
よろしければ、説明お願いします。
char *filedについて
Re:char *filedについて
> ポインタfieldを宣言して、"%s\t%s\t%s\t%s\t%s"を代入する?
それで正しいです。
"%s\t%s\t%s\t%s\t%s" の部分は文字列で、
中に書かれている暗号みたいな文字は printf 関数などで使われる書式文字と、エスケープシーケンスですね。
それで正しいです。
"%s\t%s\t%s\t%s\t%s" の部分は文字列で、
中に書かれている暗号みたいな文字は printf 関数などで使われる書式文字と、エスケープシーケンスですね。
Re:char *filedについて
"%s\t%s\t%s\t%s\t%s"という文字列がメモリ上のどこか(恐らく静的領域)に用意されて、
その先頭のアドレスがfieldという変数に代入される。アドレスが入る変数をポインタという。
ポインタには指すという意味があるので、ポインタfieldは文字列"%s\t%s\t%s\t%s\t%s"の
先頭アドレスを指していると考えるとわかりやすい。
その先頭のアドレスがfieldという変数に代入される。アドレスが入る変数をポインタという。
ポインタには指すという意味があるので、ポインタfieldは文字列"%s\t%s\t%s\t%s\t%s"の
先頭アドレスを指していると考えるとわかりやすい。
Re:char *filedについて
まだまだ初心者の自分からの説明ですが、
%s は、書式文字で、
\t は、エスケープシーケンスです。
%s は、文字列。
\t は、タブを意味します。(他には、\n で改行など。)
printf(field,"te","st","in","g","now");
とすれば、
出力には、
%s は、書式文字で、
\t は、エスケープシーケンスです。
%s は、文字列。
\t は、タブを意味します。(他には、\n で改行など。)
printf(field,"te","st","in","g","now");
とすれば、
出力には、
te st in g nowと出力されます。
Re:char *filedについて
皆様、解答ありがとうございました。
ポインタfieldには先頭アドレスが入るのですね。
%s,%tはprintf()関数の中で見かけるのですが、
char *field = "%s%t…"; ----①
は初めて見ました。
printf()関数の場合は、%sは文字列を表示しますよね。
①の場合だと%sや%tは何をしているのでしょうか?
ポインタfieldには先頭アドレスが入るのですね。
%s,%tはprintf()関数の中で見かけるのですが、
char *field = "%s%t…"; ----①
は初めて見ました。
printf()関数の場合は、%sは文字列を表示しますよね。
①の場合だと%sや%tは何をしているのでしょうか?