这个问题可能是一个非常简单的修复方法,但是我已经从Java背景中获得了新鲜感,所以我觉得C有点令人困惑,有时候我很讨厌。
* 问题概述*
我当前的问题是我有一个数组,其变量大小恰好是文件中的行数。这是一个计算并返回的整数,它变为数组大小(例如文件text.txt有12行,所以数组的大小为12)。
我想知道如何将此值返回到另一个c文件以便在函数中使用,这样我就可以遍历完整的数组。
指出要注意
代码:
void read_from_file() {
/* reading and parsing removed */
no_of_lines = (count_lines(locof) - 1);
/* locof is a char array storing the file name */
ship ships[no_of_lines];
/* i want to return the value of no_of_lines *?
我想返回no_of_lines的值
我需要值
的c文件 /*This is where i need the variable */
void asign_mayday_to_ships() {
int* ship_arr_length = SIZE OF SHIP ARRAY NEEDED
mayday_call* mday_ptr;
ship* ship_ptr; /* this is a ship array */
mday_ptr = read_mayday_file();
ship_ptr = read_ship_locations();
int i;
for(i = 0; i < SIZE OF SHIP ARRAY; i++){
}
答案 0 :(得分:1)
只需传递指针和大小,它就是C路。
void read_from_file() {
/* reading and parsing removed */
no_of_lines = (count_lines(locof) - 1);
/* locof is a char array storing the file name */
ship ships[no_of_lines];
some_fun_from_second_file(ships, no_of_lines);
答案 1 :(得分:0)
谁打电话给两个部门?难道你不能只返回上部函数中的nr行然后在第二行中传递它吗?如果没有,那么你必须以某种方式将它存储在变量(或结构成员)中,然后你可以在以后获取它。这是一个上下文解决方案,它可能对您不起作用。
答案 2 :(得分:0)
我必须首先malloc我的船只数组,然后根据元素的数量设置malloc的大小,然后我可以返回指针的大小:
ship* ships;
ships = malloc(sizeof (ship) * no_of_lines);
在我遇到问题的功能中:
mayday_call* mday_ptr;
ship* ship_ptr;
mday_ptr = read_mayday_file();
ship_ptr = read_ship_locations();
int arr_size = sizeof (ship_ptr) ;
int i;
for(i =0; i < arr_size; i++) {
//do something
}
`
答案 3 :(得分:0)
听起来像你的'老师'想要让你使用哨兵价值。即在数组末尾放置一个不存在的对象(例如一个名为all spaces的船)然后在数组处理中你保持循环直到你达到魔法值。
这是一个糟糕的设计,但是如果你不允许全局变量并且你不允许参数我不知道还能做什么