传递给C函数时丢失char数组的值

时间:2014-02-13 22:12:46

标签: c arrays parameters

我正在尝试将char []传递给函数,但每次尝试它都会失去它的价值。我可以将它传递给其他函数,但是当我将它传递给一个特定的函数时,它只会丢失存储在数组中的字符串。代码如下:

int test(char one[], int len) {
    printf("The string: %s, The size: %d", one, len);
    int to = rd_field_length(one, 0, len);
    return to;
}
int main(){
    rd_open("thefile");
    char line[200] = "";
    double d;
    int * err;
    int c, length = 0;
    if(fp != NULL) {
            while((c = rd_getchar()) != EOF && c != '\n'){
                     line[length] = c;
                     length++;
            }
    }
    int to = test(line, length);
}
int rd_field_length(char buf[], int cur, int end ){
    printf("BUF: %s", buf);
    return 0;
}

Line被传递给test并且我可以访问该字符串,但是当传递给rd_field_length时它会丢失它的值。

1 个答案:

答案 0 :(得分:1)

由于您没有在作用域中使用原型并且在定义函数之前调用该函数,因此变量将作为整数传递。如果你有32位整数和64位指针,精度的损失可能会导致指针无效或无效。