Aus*_*tin 11 c string substring
在C中,如果我有:
char *reg = "[R5]";
Run Code Online (Sandbox Code Playgroud)
而且我要
char *reg_alt = "R5"
(相同的东西,但没有括号),我该怎么做?
我试过了
*char reg_alt = reg[1:2];
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
das*_*ght 15
没有用于处理类似子串的内置语法,因此您需要手动复制内容:
char res[3];
memcpy(res, ®[1], 2);
res[2] = '\0';
Run Code Online (Sandbox Code Playgroud)
Pet*_*ter 13
我建议您需要阅读C上的基本文本,而不是假设其他语言的技术才有效.
首先,char *reg = "[R5]";
不是一个字符串.它是一个指针,初始化为指向字符串文字("[R5]"
)的第一个字符(即其值是地址).
其次,reg_alt
也是一个指针,而不是一个字符串.分配给它将包含某个地址.字符串不是C中的一等公民,因此赋值运算符不适用于它们.
第三,1:2
没有指定范围 - 它实际上是更无效的语法.是的,我知道其他语言.但不是C.因此我的评论,你不能假设C将允许它像其他语言一样.
如果要从另一个字符串中获取子字符串,有多种方法.例如;
char substring[3];
const char *reg = "[R5]"; /* const since the string literal should not be modified */
strncpy(substring, ®[1], 2); /* copy 2 characters, starting at reg[1], to substring */
substring[2] = '\0'; /* terminate substring */
printf("%s\n", substring);
Run Code Online (Sandbox Code Playgroud)
strncpy()
在标准标题中声明<string.h>
.需要终止子字符串,因为printf()
%s
format会查找零字符以标记结尾.
归档时间: |
|
查看次数: |
1005 次 |
最近记录: |