我写了一个函数来剪切输入字符串的所有左边空格。这两个函数提供相同的输出" haha"当输入是"哈哈&#34 ;. 我的问题是:
1)为什么第一个需要返回但第二个不需要返回。我添加了#34;返回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]);
}
这是我的主要():
int main()
{
char s[100];
printf("input string ");
gets(s);
LTrim(s);
puts(s);
return 0;
}
答案 0 :(得分:1)
您的第二个代码段似乎没有返回声明,请更正以获得正确答案。
第一个函数返回一个字符指针,它将是指向字符数组起始位置的内存,而第二个函数返回一个字符。
你对返回的值做的是什么会有所不同,代码似乎对传递给它们的字符数组(字符串)执行相同的操作,所以如果你只是查看初始和最后的字符串,它会是一样的。
另一方面,如果您实际上为某些目的使用了返回的值,那么您将获得两个函数的不同结果。
答案 1 :(得分:0)
char *LTrim(char s[]){}
是字符数组/字符串的函数,返回 character pointer
,即返回 reference / memory address
char LTrim(char s[])
是字符数组/字符串的函数,仅返回 character
。
答案 2 :(得分:0)
switch (x) {
case 'A':
System.out.print(x);
x = 'D';
break;
case 'B':
System.out.print(x);
x = 'C';
break;
case 'C':
System.out.print(x);
x = 'D';
break;
}
是一个单一字符。
char
是指向char的指针。
char *
主要用于指向字符串的第一个字符(例如示例中的char *
)。
在第一个示例中,您返回修改后的s
变量,在第二个示例中,您不返回任何内容,因此最好将返回值更改为s
而不是void
。