我正在尝试将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时它会丢失它的值。
答案 0 :(得分:1)
由于您没有在作用域中使用原型并且在定义函数之前调用该函数,因此变量将作为整数传递。如果你有32位整数和64位指针,精度的损失可能会导致指针无效或无效。