[英]Printing arrays from pointers, only the first element prints
我試圖使用返回到第一個元素的指針打印結構數組,然后使用指針算法打印出數組。
我這樣做的方式適用於船舶陣列,但是當我嘗試打印資產數組時,只打印第一個元素,盡管我使用完全相同的技術! 有沒有人知道為什么會這樣?
一個FYI:資產數組被正確填充,如果我在函數中打印出來,我填充數組的所有值都是正確的。
試圖打印數組:
size_t ship_size;
size_t asset_size;
ship* ship_ptr;
rescue_asset* assets_ptr;
ship_ptr = read_ship_locations(&ship_size);
assets_ptr = read_rescue_assets(&asset_size);
int z;
for (z = 0; z < asset_size; z++)
{
printf("asset %d \t callsign: %s \n", z, (assets_ptr + z)->callsign);
}
返回assets數組:
rescue_asset* read_rescue_assets(size_t* size)
{
no_of_lines = count_lines(locof);
assets = calloc(no_of_lines, sizeof(rescue_asset));
*size = (size_t) no_of_lines;
//fill array
return assets;
}
打印結果:
asset 0 callsign: Rescue_169
asset 1 callsign:
[and so on ...]
asset 36 callsign:
我認為這是問題,它似乎只保存到數組中的第一個元素:
這是我的填充數組函數:
for (i = 0; i < no_of_lines; i++) {
while (fscanf(fp, "%s %c %s %lf %lf %f %u %u", assets[i].callsign,
&assets[i].type, assets[i].base, &assets[i].loc.lat,
&assets[i].loc.lng, &assets[i].speed, &assets[i].max_deploy_time,
&assets[i].service_time) != EOF) {
printf("asset: %d \t callsign: %s \n", i, assets[i].callsign);
}
}
這是這種方法的結果:
asset: 0 callsign: Angle_Lifeboat
asset: 0 callsign: Angle_ILB
asset: 0 callsign: Broad_Haven_ILB
[and so on ...]
asset: 0 callsign: Rescue_116
asset: 0 callsign: Rescue_122
asset: 0 callsign: Rescue_169
assets
索引在外部for
-loop中遞增。
閱讀完全發生在內部while
-loop中, i
保持不變。
在每次成功調用fscanf()
之后,擺脫for
-loop並增加i
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.