我正在编写一个函数,该函数用于读取文件并将字符逐字符插入数组中,然后返回指向该数组的指针。文件允许的最大大小为2KB。
这就是我现在所拥有的:
int main(){
char data[2048];
char* data4=layer4(data);
}
char* layer4(char array[]){
FILE *fp;
fp=fopen("sendfile.txt","r+");
fscanf(fp, "%c", array);
for(int i=0; i<2048; i++){
printf("%c\n",array[i]);
}
return &array;
}
答案 0 :(得分:6)
您只需要返回:
return array;
答案 1 :(得分:3)
多个问题。有些暗示@Jay Kumar
char* layer4(char array[]){
FILE *fp;
fp=fopen("sendfile.txt","r+");
// check if open succeeded
if (fp == NULL) return NULL;
// Unclear why codes read only 1 char
// fscanf(fp, "%c", array);
// Suspect OP wants
size_t i;
for(i=0; i<2048; i++){
if (fscanf(fp, "%c", &array[i]) != 1) break;
}
// Could have use fread()
// More canonical to use type `size_t` than `int` to index arrays.
// for(int i=0; i<2048; i++){
for(size_t j=0; j<i; j++){
printf("%c\n",array[j]);
}
// do not forget to put your toys away
fclose(fp);
// Simply return `array`
// return &array;
return array;
}
答案 2 :(得分:2)
返回指向该数组的指针
不,你不必这样做。
您可以将原型编写为void layer4(char array[])
并直接修改array
- 您在array
内对layer4
所做的更改将在该函数退出后保留。
答案 3 :(得分:2)
array
已指向char
。因此,您只需要返回array
,而不是&array
。
答案 4 :(得分:0)
array
已经是一个指针。所以只需:return array;
答案 5 :(得分:0)
您的方法应该将数组作为数组或指针,因为它是一个指针,然后您可以将其作为自身返回。 try here
document.loanCalc.pay.value = Math.round(princ * intr / (1 - (Math.pow(1 / (1 + intr), term))));