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;}
什么是'Array'?什么是'a_length'?什么是'get'?什么是'字符串'?你会在哪一行发生错误?而且它是你展示的编译器的完整和未编辑输出?另外,请学习如何创建[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –
问题到底是什么?你问是否编译器拒绝程序是错误的?可能它不是。你在问编译器在抱怨什么吗?当然,它给了你一个比你给我们更好的主意。你在问如何解决它?你没有给我们足够的信息来告诉。 –
什么是get(float,weight_array,(i))'? 'float'是一个类型,而不是一个变量,因此属于函数定义,不作为参数传递。我敢打赌'String'也是一个(不明智的)类型,而不是一个变量。在这种情况下,无论如何'get'都会被传入不同的类型。 –