【问题标题】:How to parse the end of char array? [closed]如何解析char数组的结尾? [关闭]
【发布时间】:2013-04-21 18:22:50
【问题描述】:

假设我有一条如下所示的行:

"abcdefghi"

如果我想要“hi”,并且后面没有任何内容,我该如何解析?

我尝试了strtok(str, "'\0'"),但我似乎无法让它发挥作用。

C 中是否有一个函数可以让我这样做?

【问题讨论】:

  • 你到底想要什么?字符串的最后 2 个字符?
  • 嗯,strstr(stuff, "hi") 也许?
  • printf("%s", "abcdfghi" + 6);
  • @EricPostpischil 我想将另一个字符数组设置为“hi”的字符,以便我可以传递给另一个函数。我不会有重复的值或其他任何东西。如果我有“$t0”这一行,那么我想将该行缩减为“t0”。
  • @Laurence:这是对问题的正确陈述吗:x 是指向 char 的指针或带有终止空字符的 char 数组的名称。将x 的最后两个非空字符复制到数组y

标签: c arrays parsing char c-strings


【解决方案1】:

您可以使用strstr 在您的字符串中查找子字符串。

char * pointsToHi = strstr( string , "hi") ;

【讨论】:

  • 非常感谢,这可能有效。现在尝试在我的代码中使用它。
【解决方案2】:

首先,在程序的前面某个地方需要声明和定义:

#include <string.h>
…
char y[3]; // Define array to hold results.

然后x的最后两个字符和终止的空字符可以复制为:

// Find length of string.
size_t length = strlen(x);

// Copy last two characters.
strcpy(y, x+length-2);

请注意,这要求x 至少包含两个字符。

或者,可以复制没有终止空字符的两个字符:

// Find length of string.
size_t length = strlen(x);

// Copy last two characters without the terminating null character.
strncpy(y, x+length-2, 2);

或者:

// Find length of string.
size_t length = strlen(x);

// Copy last two characters without the terminating null character.
y[0] = x[length-2];
y[1] = x[length-1];

【讨论】:

  • 非常感谢,我认为 C 不允许你这样复制字符。再次感谢您澄清我的问题并彻底回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
相关资源
最近更新 更多