c - 是否可以仅打印出 C 字符串的特定部分,而不制作单独的子字符串?

标签 c printf c-strings

假设我有以下内容:

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

是否可以只打印出这个字符串的最后 5 个字节?仅前 5 个字节怎么样? printf 是否有一些允许这样做的变体?

最佳答案

Is it possible to print out only the last 5 bytes of this string?

是的,只需传递一个指向倒数第五个字符的指针。您可以通过 string + strlen(string) - 5 来确定。

What about the first 5 bytes only?

使用精度说明符:%.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;
}

关于c - 是否可以仅打印出 C 字符串的特定部分,而不制作单独的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780809/

相关文章:

检查 C 中的不同字符

c - 使用 scanf 读取后缀表示法计算器的表达式

c++ - new/malloc 似乎如何记住分配的数据量?

c - Strcmp() 函数未返回 0

c |比较字符串格式

c - 简单程序将 "D"添加到输出

在 C 中读取和打印 .txt 文件行的最清晰方法

c++ - C++ 代码的意外输出

c - 从 C 中的 *char[] 变量获取第一个字符

c - C 语言中字符串的结构空字符(\0) 问题