は'\0'
文字列全体ではなく一部の文字を印刷する機能はありますか?
char str[] = "hello world";
printf("%s",str);
printf文は、文字列内のすべての文字を印刷し参照
ので、私はstdout
にstr
のわずか4第一文字を印刷したい場合は?あなただけ使用できる最初の文字、については
は'\0'
文字列全体ではなく一部の文字を印刷する機能はありますか?
char str[] = "hello world";
printf("%s",str);
printf文は、文字列内のすべての文字を印刷し参照
ので、私はstdout
にstr
のわずか4第一文字を印刷したい場合は?あなただけ使用できる最初の文字、については
あなただけのprintfのフォーマット文字列内のフィールド幅を指定することができます
#include <stdio.h>
int main(void)
{
const char *s = "Hello world !";
const int fw = 4;
printf("%.*s\n", fw, s);
return 0;
}
に:あなたは、実行時にフィールド幅を指定したい場合は、
#include <stdio.h>
int main(void)
{
const char *s = "Hello world !";
printf("%.4s\n", s);
return 0;
}
をかいずれの場合も、出力は次のようになります。
Hell
:異なる文字については
printf ("%c", *str); // or
printf ("%c", *(str+0)); // or
printf ("%c", str[0]);
、ちょうど手を差し伸べるとオフセットを使用してそれをつかみます。二l
のために3オフセット:すべてこれらのソリューションでは
printf ("%.2s", str+3); // prints "lo"
:部分文字列の場合は
printf ("%c", str[3]); // or
printf ("%c", *(str+3));
を、あなたはprintf
の最大フィールド幅の機能と一緒にその方法を組み合わせて使用することができますヌルターミネータの間違った側で始まらないようにする必要があります。それはあなたが任意の文字列のために動作します一般的なソリューションをしたい場合は
:-)良いこと、そして出発点を見つけるの面で比較的安全である、あなたが使用することができません。
void outSubstr (FILE *fh, char *str, size_t start, size_t sz, int padOut) {
if (start >= strlen (str)) {
if (padOut)
fprintf (fh, "%*s", sz, "");
return;
}
if (padOut)
fprintf (fh, "%-*.*s", sz, sz, str + start);
else
fprintf (fh, "%-.*s", sz, str + start);
}
パラメータは次のとおりです。
fh
は、書き込み先のファイルハンドルです。str
は、文字列の先頭です。start
は、印刷を開始するオフセットです。sz
は、印刷する最大文字数です。padOut
は、sz
がの最小値であることを示すフラグです。サイズを満たすのに十分な文字が文字列にない場合、出力には右側のスペースが埋め込まれます。これで最大4文字が印刷されます。
printf("%.4s", str);
あなたのフォーマット文字列内に%c使用することができます。
printf("%c", s[3]);
プリント 'l' の
numOfChars = 4;
printf("%.*s\n", numOfChars, "Hello, world!");
:任意の文字を印刷するには
printf("%c", *s);
プリント 'H'
をここで、numOfChars
は印刷したい文字数です。
char *s = "Hello, World!";
write(1, s, numberOfChars);
それともあなたは本当にそれがchar行いたい場合...
int main(void)
{
char c;
c = 'z';
write(1, &c, 1);
}
その後のことができます。ここに重いstdioの
は必要ない:システムの
私の編集内容があなたの意図したものであると私は思っています。文字列自体に変数を直接入れることはできません。 '*'を使う必要があります。 – paxdiablo
はい、そうです。プログラミング言語から他の言語への「ジャンプ」は、私を常に混乱させます。ごめんなさい。 – DonCallisto
probsはありません。私が開発していたPerlコードでは一度エラーが発生しました。調査したとき、Pythonで関数全体をコーディングしました:-)気をつけてください。 – paxdiablo
本当に苦痛が少ないです文字数:
void printnchars(char *s, int n)
{
int i;
i = 0;
while (i <= n)
{
write(1, s + i, 1);
i++;
}
}
ISO Cには 'write'がありません:-)おそらくあなたは' fputc'を意味しましたか? – paxdiablo
there is also a "substr()" function
that return the substring from complete string.
example
printf("%s",substr(str,0,4));
it has syntax like this
substr(arrayName,charStartingPosition, lengthOfCharacters);
i hope this is easy to understand and no need to write more than 1 statement.
ああ、私は同じことをしましたが、私は行方不明でした。 %の後でそれは働いていなかった... !! –