簡體   English   中英

C ++,需要幫助用strcat創建的指針!

[英]C++, need help with pointers created with strcat!

我需要在單詞flare的末尾添加一個數字,具體取決於我有多少。 那部分效果很好。 我的問題是當我把它打印到屏幕上時。 我想程序輸出什么(Camera :: Table [Id] - > sensor-> flare1)傳感器指向的值,在這種情況下,是flare one。 如果程序要繼續,它將輸出指向flare2,flare3,flare4,......的值,直到達到限制。
我得到的輸出如下:

lens_pos1=¨Camera::Table[Id]->sensor->flare1¨ 
lens_pos2=¨Camera::Table[Id]->sensor->flare2¨ .......  

如何輸出flare1的值而不是粘貼字符串?

我想要的是以下內容:

lens_pos1=¨10.3¨ lens_pos2=¨12.4¨..... 

其中值10.3,12.4將分別取自單獨的C文件中的flare1和flare2。

for(int i = 1; i <= nbflares; i++)  
{  
    char integer_string[32];  
    sprintf(integer_string, "%d", i);  
    char flare[100] = "Camera::Table[Id]->sensor->flare";

    strcat(flare,integer_string);

    fprintf(yyout, "lens_pos%d=\"%s\" ",i,flare);
}

您無法在C / C ++中訪問類似的變量。 您必須重新設計“傳感器”結構以包含數組而不是單個耀斑,並通過索引訪問數組:Camera :: Table [Id] - > sensor-> flare [1],Camera :: Table [Id] - > sensor-> flare [2]等

這不能用C ++完成。 一些解釋型語言可能允許這樣的事情,因為源代碼的文本在程序運行時仍然存在。 但是在C ++中,當你編譯程序時,所有類和變量的名稱都會丟失。 當它到達正在運行的可執行文件時,實際的機器指令只是處理偏移量和內存地址。

因此,您需要重新設計數據的存儲方式。

有沒有辦法在不使用數組的情況下訪問它們?

從技術上講,是的。 但只能使用更復雜的方案來處理更復雜的數據結構(例如鏈表或地圖)。

你為什么要避免使用數組呢? 現在,您有一系列相同類型的變量,您希望通過數字來區分它們的名稱末尾。 數組是一系列相同類型的變量,它們通過數組中的索引進行區分。 這幾乎是完美的搭配。

例如,如果你有一個flares陣列,那么你可以簡單地做一些事情:

for(int i = 0; i < nbflares; i++)  
{  
    fprintf(yyout, "lens_pos%d=\"%f\" ", i, Camera::Table[Id]->sensor->flares[i]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM