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() %sformat会查找零字符以标记结尾.
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |