C变量传递返回错误

时间:2018-06-14 16:37:24

标签: c

我的代码是:

#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 ++。

感谢。

1 个答案:

答案 0 :(得分:0)

你有几个问题。

关于return的警告是因为您声明的函数返回类型不正确。它应该是:

char *lel(char var[]) {
    ...
}

while循环错误,因为您正在调用不存在的length()函数。获取字符串长度的函数是strlen()。但那个循环是不必要的。 strlen()通过搜索字符串中的第一个空字节来工作,因此在执行var[j] = '\0';后,下一个strlen()将返回刚刚添加的字节的位置。所以写一下:

var[j] = '\0';

没有循环。

无需在strcpy()中致电main()lel()修改字符串,并返回指向同一字符串的指针。将字符串复制回自身没有任何效果,并且违反了strcpy()的参数不得重叠的约束。