2016-11-30 134 views
0

非常感謝您的回答! 我寫了一個PROGRAMM這似乎在我看來可能是正確的,但在編譯器中發生錯誤(約使用strcmp的第一行):C - 字符串strcmp和字符串比較來自數組

「錯誤類型:元素的大小爲4個字節,而字符串的大小8 字節「。

float total_weight_kg(Array weight_array) { // todo: modify header (parameters, parameter types, return type) 
float sum = 0; 
for (int i = 0; i < a_length(weight_array); i+=2) 
{ 
    if(strcmp(get(String, weight_array, (i+1)), "kg") == 0){ sum = sum + get (float, weight_array, (i)) ;} 
    if(strcmp(get (String, weight_array, (i+1)), "l") == 0 ){ sum = sum + get (float, weight_array, (i)) ;} 
    if(strcmp(get (String, weight_array, (i+1)), "g") == 0 ){ sum = sum + (get (float, weight_array, (i))*1000) ;} 
    if(strcmp(get (String, weight_array, (i+1)), "mg") == 0){ sum = sum + (get (float, weight_array, (i)) * 1000000) ;} 
    else{printf("Impossible for this case. Unknown unit of measurement.");} 
} 
return sum;}  
+8

什麼是'Array'?什麼是'a_length'?什麼是'get'?什麼是'字符串'?你會在哪一行發生錯誤?而且它是你展示的編譯器的完整和未編輯輸出?另外,請學習如何創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+1

問題到底是什麼?你問是否編譯器拒絕程序是錯誤的?可能它不是。你在問編譯器在抱怨什麼嗎?當然,它給了你一個比你給我們更好的主意。你在問如何解決它?你沒有給我們足夠的信息來告訴。 –

+0

什麼是get(float,weight_array,(i))'? 'float'是一個類型,而不是一個變量,因此屬於函數定義,不作爲參數傳遞。我敢打賭'String'也是一個(不明智的)類型,而不是一個變量。在這種情況下,無論如何'get'都會被傳入不同的類型。 –

回答

0

浮標是4個字節。通過您的使用get功能(S)的猜測,

get(String, weight_array, (i+1)) 

的問題是與weight_array是float數組,但第一個參數是幹什麼用String類型的一些執行。

因此你的錯誤,

「錯類型:元件的大小是4個字節,但字符串的大小是8個字節」