我编写了一个函数来剪切输入字符串的所有左侧空间。当输入为“哈哈”时,这两个函数给出相同的输出“哈哈”。 我的问题是:
1)为什么第一个需要返回而第二个不需要。我添加了“return s”,但它出现了语法错误。
2)如果我在其他情况下使用它,这些有什么不同吗?
3)很多人说第二个返回一个字符而不是字符串,我的输出怎么样?
char *LTrim(char s[])
{
int i=0;
while(s[i]==' ')i++;
if (i>0) strcpy(&s[0],&s[i]);
return s;
}
和
char LTrim(char s[])
{
int i=0;
while(s[i]==' ')i++;
if (i>0) strcpy(&s[0],&s[i]);
}
这是我的 main():
int main()
{
char s[100];
printf("input string ");
gets(s);
LTrim(s);
puts(s);
return 0;
}
最佳答案
您的第二个代码段似乎没有返回语句,请更正它以获得正确的答案。
第一个函数返回一个字符指针,该指针将是指向字符数组 s 的起始位置的内存,而第二个函数返回单个字符。
您对返回的值所做的操作将会产生差异,这两个代码似乎都对传递给它们的字符数组(字符串)执行相同的操作,所以如果您只查看初始和最终字符串,都会一样。
另一方面,如果您实际上将返回值用于某种目的,那么这两个函数都会得到不同的结果。
关于char* 或 char ?.我不明白这里的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34090066/