【问题标题】:How to get "substring" from a char array in C如何从C中的char数组中获取“子字符串”
【发布时间】:2018-02-22 22:25:10
【问题描述】:

我有一个 char 数组,格式如下:

[17 个字符,一个制表符,17 个字符,一个制表符,17 个字符,一个制表符,一个代表 1 到 4 位长的数字的字符,空字节]

我想将制表符字符和空字节之间的字符存储在一个新变量中。

示例 1:这可能是我的 char 数组:

[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,\t,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,\t,1,2,3,4,5,6,7,8,9,0,1, 2,3,4,5,6,7,\t,3,4,\0]

我想将 int 34 保存在一个名为 x 的变量中。

示例 2:这可能是我的 char 数组:

[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,\t,1,2,3,4,5 ,6,7,8,9,0,1,2,3,4,5,6,7,\t,1,2,3,4,5,6,7,8,9,0,1, 2,3,4,5,6,7,\t,5,9,9,\0]

我想将 int 599 保存在一个名为 x 的变量中。

如果我知道该数字的位数,我可以轻松做到这一点,但不知道如何解决数字长度未知的问题。

非常感谢任何帮助。

【问题讨论】:

  • 查找memcpy()
  • 谢谢,但是从阅读 memcpy() 的文档来看,您似乎无法选择 0 以外的起始索引(即您只能获取字符串的前 n 个字符),而是比索引 a 和索引 b 之间的 n 个字符。
  • 当然可以,通过指针算法。只需将a 添加到指针值即可。

标签: c arrays string substring c99


【解决方案1】:

假设str 指向您的字符串(又名char 数组),因为您似乎需要int 中的那个数字,那么您可以使用atoi(str + 3 * (17 + 1)) 来获得您想要的。

如果您想在另一个字符串中使用它,那么您可以使用strcpy(str2, str + 3 * (17 + 1)),假设您的缓冲区由str2 指向。

顺便说一句,atoi() 需要包含 stdlib.hstrcpy() 需要包含 string.h

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2021-07-19
    相关资源
    最近更新 更多