2016-11-30 136 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个字节”