【问题标题】:Is there a possibility to print just 1 byte of a string?是否有可能只打印字符串的 1 个字节?
【发布时间】:2015-04-23 17:59:05
【问题描述】:

我的意思是有可能打印一个像 ("hello") 这样的字符串,即只是 "e" 或 "l"。 我想我可以用这段代码来完成:

char *gg = "hello";
printf("%.4s \n",gg + strlen(gg) - 2);

但它不起作用。

【问题讨论】:

  • 您只需将 "%.4s \n" 更改为 "%c \n" 并用 * 取消引用 (gg + strlen(gg) - 1)。
  • @ParhamAlvani:我想你的意思是"%.1s"。您需要 %s 用于字符串(gg + strlen(gg) - 2 是)和 "%c" 用于字符。
  • @pmg Ok %s for string 但你想要 1 个字节,所以你需要 %c。在 C 中,当你说 print %s 时,你的意思是去读取字符串直到 \0,当你说 print %c 时,你的意思是只打印一个字符。
  • 不! %c 需要 int 类型的值,%s 需要 char * 类型的值。这些类型不兼容。你不能随意互换它们
  • 现在好了。很好的修正:)

标签: c arrays string


【解决方案1】:

您需要执行以下操作:

char *gg = "hello";
printf( "%c\n", gg[3] );

这将打印第四个字符(从零开始的数组 = 0、1、2、3 所以 0='h'、1='e' 等)。将 3 更改为您想要的任何字符,但请确保不要超过字符串的末尾。 strlen 会告诉你字符串的长度。

【讨论】:

  • OP 询问了el,但由于l 有两个,答案在e 上会更清楚,即gg[1](尽管他的代码正在尝试gg[3])。
  • 我将 OP 的问题解释为使用“e”或“l”作为单个字符的示例。我的回答给出了最后一个'l',就像他的 strlen() - 2 建议的那样。我猜如果字符很重要,代码将不得不搜索它,但这没有意义。
猜你喜欢
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多