【发布时间】:2023-03-13 07:36:01
【问题描述】:
我的程序有点问题。它的工作方式是一个函数应该在我选择的两个字符之间返回一个字符字符串,例如“a1234a”,我想返回“a”之间的所有字符,我会得到 1234。问题是我的输出也打印了第一个'a',所以我得到了“a1234”。代码如下:
char* string_between(char *s, char c){
int length = strlen(s);
int counter = 0;
char* strBetween = malloc(strlen(s));
for(int i = 0; i<length; i++){
if(s[i] == c){
counter++;
}
if(counter == 1){
strBetween[i] = s[i];
}
}
if(counter<2){
free(strBetween);
return NULL;
}
return strBetween;
}
我尝试在if(counter == 1) 语句中添加s[i] != c,但随后情况变得更糟并且根本不打印任何内容。我对 C 还是很陌生,所以请尽可能简单地解释一下:) 感谢阅读!
【问题讨论】:
-
请学习如何使用调试器。使用调试器,您可以逐行检查代码并查看它的作用,同时能够监视变量及其值。这是所有程序员都需要的一项基本技能。
-
一个基本错误:未能终止返回的字符串。此外,您不能定义名称以
str开头的函数,这是一个保留的命名空间。 -
想想
i在strBetween[i] = s[i];行中的价值。另外,如果c不是不是输入字符串中的第一个字符会怎样?
标签: c string function char return