我的代码是:
#include <stdio.h>
#include <string.h>
int lel(char var[]){
int i=0,j=0;
printf("\n\n\n");
while (var[i]!='\0'){
printf("%c\n",var[i]);
if (var[i]!='s'){
var[j]=var[i];
j++;
}
i++;
}
while (j<lenght(var)){
var[j]='\0';
}
return var;
}
int main(){
char a[10]="123asss1",s[10]="assssssa",d[10]="asdfghj";
strcpy(a,lel(a));
strcpy(s,lel(s));
strcpy(d,lel(d));
printf("%s\n%s\n%s\n",a,s,d);
}
如果是这样,它会突出显示“return var;”作为错误。但是,当我只是删除
while (j<lenght(var)){
var[j]='\0';
}
。 它完美无缺。
#include <stdio.h>
#include <string.h>
int lel(char var[]){
int i=0,j=0;
printf("\n\n\n");
while (var[i]!='\0'){
printf("%c\n",var[i]);
if (var[i]!='s'){
var[j]=var[i];
j++;
}
i++;
}
return var;
}
int main(){
char a[10]="123asss1",s[10]="assssssa",d[10]="asdfghj";
strcpy(a,lel(a));
strcpy(s,lel(s));
strcpy(d,lel(d));
printf("%s\n%s\n%s\n",a,s,d);
}
我不明白。为什么它只是因为一小段循环而无法工作。它再次突出了“return var;”。
我使用Dev C ++。
感谢。
答案 0 :(得分:0)
你有几个问题。
关于return
的警告是因为您声明的函数返回类型不正确。它应该是:
char *lel(char var[]) {
...
}
while
循环错误,因为您正在调用不存在的length()
函数。获取字符串长度的函数是strlen()
。但那个循环是不必要的。 strlen()
通过搜索字符串中的第一个空字节来工作,因此在执行var[j] = '\0';
后,下一个strlen()
将返回刚刚添加的字节的位置。所以写一下:
var[j] = '\0';
没有循环。
无需在strcpy()
中致电main()
。 lel()
修改字符串,并返回指向同一字符串的指针。将字符串复制回自身没有任何效果,并且违反了strcpy()
的参数不得重叠的约束。