1. ホーム
  2. c

[解決済み] C言語の文字列を分割せずに、ある部分のみを出力することは可能ですか?

2023-07-16 05:16:11

質問

次のようなものがあるとします。

char* string = "Hello, how are you?";

この文字列の最後の5バイトだけを印刷することは可能でしょうか?最初の5バイトのみはどうでしょうか?の何らかのバリエーションはありますか? printf のバリエーションで、これを可能にするようなものはありますか?

どのように解決するのですか?

この文字列の最後の5バイトだけを出力することは可能ですか?

はい、最後から5番目の文字へのポインタを渡すだけです。これは次のようにして決定することができます。 string + strlen(string) - 5 .

最初の5バイトのみはどうでしょうか?

精度指定子を使用する。 %.5s

#include <stdio.h>
#include <string.h>
char* string = "Hello, how are you?";

int main() {
  /* print  at most the first five characters (safe to use on short strings) */
  printf("(%.5s)\n", string);

  /* print last five characters (dangerous on short strings) */
  printf("(%s)\n", string + strlen(string) - 5);

  int n = 3;
  /* print at most first three characters (safe) */
  printf("(%.*s)\n", n, string);

  /* print last three characters (dangerous on short strings) */
  printf("(%s)\n", string + strlen(string) - n);
  return 0;
}