- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我无法获取“xxx”?返回值是一些很奇怪的符号...我希望返回值是xxx,但我不知道这个程序出了什么问题。该函数运行良好,可以为我打印“xxx”,但是一旦它返回值到主函数,字符串结果就无法很好地显示“xxx”。谁能告诉我原因吗?
char* cut_command_head(char *my_command, char *character) {
char command_arg[256];
//command_arg = (char *)calloc(256, sizeof(char));
char *special_position;
int len;
special_position = strstr(my_command, character);
//printf("special_position: %s\n", special_position);
for (int i=1; special_position[i] != '\0'; i++) {
//printf("spcial_position[%d]: %c\n", i, special_position[i]);
command_arg[i-1] = special_position[i];
//printf("command_arg[%d]: %c\n", i-1, command_arg[i-1]);
}
len = (int)strlen(command_arg);
//printf("command_arg len: %d\n", len);
command_arg[len] = '\0';
my_command = command_arg;
printf("my_command: %s\n", my_command);
return my_command;
}
int main(int argc, const char * argv[]) {
char *test = "cd xxx";
char *outcome;
outcome = cut_command_head(test, " ");
printf("outcome: %s\n",outcome);
return 0;
}
最佳答案
这里
my_command = command_arg;
将局部变量的地址分配给要返回的变量。该局部变量位于 cut_command_head()
的堆栈中。
函数返回后该地址无效。访问由 cut_command_head()
返回的内存会引发未定义的行为。
您需要在某个时间、某个地方分配内存。
最简单的方法是使用 strdup()
(如果有的话):
my_command = strdup(command_arg);
一种可移植的方法是使用 malloc()
然后复制有问题的数据:
my_command = malloc(strlen(command_arg));
if (NULL != my_command)
{
strcpy(my_command, command_arg);
}
这看起来也很奇怪:
len = (int)strlen(command_arg);
//printf("command_arg len: %d\n", len);
command_arg[len] = '\0';
只需删除它并在开头将 command_arg
初始化为全零,以确保它始终以 0
结尾:
char command_arg[256] = {0};
关于c - 弦操作(切掉弦头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29331945/
例如,如果我有 >>> name = f"{os.path.splitext(os.path.basename('/some/long/path/I/donot/need/to/some/config
我正在学习教程并试图了解此处发生的情况。所以我们首先将“消息”编码为字节,然后取其长度并将其向左对齐(?)10,然后对整个内容进行编码? 我试图在我的设备中使用这个部分,它不理解 f-strings,
我敢肯定这个问题被问了很多,但我只是想确保没有更好的方法来做到这一点。 基本上,我有一个 const char* 指向一个以 null 结尾的 C 字符串。我有另一个函数,它需要一个指向具有相同字符的
我使用的是最新的稳定版 PyCharm 2016.1.4 和 Python 3.6a1。每当我使用“f-strings”(PEP-498)时,PyCharm 都会提示 f 是一个 Unresolved
我发现了一些显然是为 python 3.6 设计的代码。 出于某种原因,我需要在 python 3.5 环境中运行该代码。据推测,这两个版本应该是向后兼容的。然而,原始代码在 f-strings 中滥
我是一名优秀的程序员,十分优秀!