творю новый вопрос, потому что я счел, что другая тема, чтобы мой один о моей предыдущей проблеме здесь: Trouble looping through arrays define in other source filesПасс ссылки не сохраняя его целочисленное значение
Проблема я тока есть в том, что я прохожу в значение size_t по ссылке на другую функцию, тогда я устанавливаю значение указанного size_t внутри этой функции, которое затем вы можете использовать в другой функции.
Проблема, с которой я столкнулся, заключается в том, что когда я передаю переменную size_t, функция, которая устанавливает значение, устанавливает его значение правильно, но когда я возвращаюсь к исходному файлу, где объявлена переменная, он снова имеет «случайные» значения.
У кого-нибудь есть идеи, почему это происходит?
system_handler.c
size_t ship_size;
size_t asset_size;
mayday_call* mday_ptr;
ship* ship_ptr;
rescue_asset* assets_ptr;
mday_ptr = read_mayday_file();
ship_ptr = read_ship_locations(&ship_size);
assets_ptr = read_recuse_assets(&asset_size);
printf("ships size : %d\n", ship_size);
printf("assets size : %d\n", asset_size);
ship.c
ship* read_ship_locations(size_t* size){
//no_of_lines is an unsigned int
//locof is a char array containing a file name
no_of_lines = (count_lines(locof) -1);
printf("number of lines = %d \n", no_of_lines);
size = (unsigned int)no_of_lines;
size = no_of_lines;
}
rescue_assets.c
rescue_asset* read_rescue_assets(size_t* size) {
//no_of_lines is an unsigned int
//locof is a char array containing a file name
no_of_lines = count_lines(locof);
printf("number of lines = %d \n", no_of_lines);
assets = calloc(no_of_lines,sizeof (rescue_asset));
size = (unsigned int)no_of_lines;
printf("size : %d\n", size);
}
Консоль Выход:
please enter the file name for the ship locations data:
ships_1.txt
number of lines = 4
size : 4
Please enter the file name for the rescue assets data:
rescue_assets.txt
number of lines = 37
size : 37
ships size : 134513984
assets size : 0
Упс! Нет пропуска по ссылке в C !! – haccks