简体   繁体   English

C-来自数组的strcmp和字节比较的字节

[英]C - Bytes of strcmp and String comparison from Array

Thank you in advance for your answer ! 预先感谢您的答复! I wrote a programm which seems probably correct in my opinion but an error occurs in the compiler (about the first line with strcmp) : 我写了一个程序,在我看来这似乎是正确的,但是在编译器中发生错误(关于strcmp的第一行):

"Wrong type: Size of element is 4 bytes, but size of String is 8 bytes." “错误的类型:元素的大小为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;}     

Floats are 4-bytes. 浮点数为4字节。 Guessing by your use of the get function(s), 通过使用get函数进行猜测,

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

the issue is with weight_array being an array of floats, but the first parameter is doing some executing with a String type. 问题在于weight_array是一个浮点数数组,但是第一个参数正在执行一些使用String类型的执行。

Hence your error, 因此,您的错误

"Wrong type: Size of element is 4 bytes, but size of String is 8 bytes." “错误的类型:元素的大小为4个字节,但字符串的大小为8个字节。”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM