【发布时间】:2019-05-27 17:56:22
【问题描述】:
我正在尝试在 C 中提取子字符串。我有一个字符串函数(char command[])的输入,并且正在取出其中的一部分。在调试我的代码时,我注意到当我到达函数的后面部分时,值(条件和累积)正在被删除。为什么是这样? (见下面的代码)
int multiply(char command[]) {
char condition[5];
memmove(condition, command, 4);
condition[3] = '\0';
char accumulate[2];
memmove(accumulate, &command[4], 1);
accumulate[2] = '\0';
char set[2];
memmove(set, &command[5], 1);
set[2] = '\0';
return EXIT_SUCCESS;
}
根据调试器,在定义 set 时会擦除条件,并在 EXIT_SUCCESS 时擦除累积。
【问题讨论】:
-
你想在这里实现什么?如,您计算的子字符串应该在哪里结束?我已经回答解释发生了什么,但如果没有更多细节@Ben Dent,我无法帮助您使功能正常工作
-
accumulate[2] = '\0';是未定义的行为,因为它正在索引数组char accumulate[2];超出其范围。 -
和
char set[2]一样。