我们如何在C中定义和使用函数内部的结构?

时间:2017-10-09 19:18:39

标签: c arrays sorting structure

我正在尝试在函数内创建一个结构,我正在尝试使用它。但是,当我从结构中比较两个值时,我收到了这条消息:

“C:\ Users \ hp \ Desktop \ prgm \ cap.c ||在函数'fnumber'中: C:\ Users \用户马力\桌面\ PRGM \ cap.c |

72 | error:请求成员'f_value'不是结构或联合| || ===构建失败:1个错误,0个警告(0分钟,0秒(秒))=== |

这是我的代码: -

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

/*
 * Complete the function below.
*/
int fnumber(long input1,int input2_size, int* input2)
{
    int i, j, k, count[input2_size],temp=0;
    int arr_temp[input2_size];
    struct smaller{
            int position;
            int f_value;};

     struct smaller list[input2_size];
     struct smaller temp1;
    memccpy(arr_temp, input2, input2_size,sizeof(int));
    for(i=0; i<input2_size;i++)
    {
        for(j=i+1; j<=input2_size;i++)
        {
            if(arr_temp[i]>arr_temp[j])
            {
                temp=arr_temp[i];
                arr_temp[i]=arr_temp[j];
                arr_temp[j]=temp;
            }
        }
    }
    for(i=0; i<input2_size;i++)
    {
        if(i>1)
        count[i]=input2[i];
        for(j=0;j<input2[i-1];j++)
        {
            count[i]+=arr_temp[j];
        }
    }
   /* for(i=0;i<input2_size-1;i++)
    {
        for(j=i+1;j<input2_size;j++)
        {
            if(count[i]>count[j])
            {
            temp=count[i];
            count[i]=count[j];
            count[j] = temp;
            }
        }

    }*/
    for(i=0,j=0;i<input2_size;i++)
    {
        if(count[i]<=input1)
            continue;
        else
        {
            list[j].position=i;
            list[j].f_value=count[i];
            j++;
        }

    }
    for(i=0;i<input2_size-1;i++)
    {
        for(j=i+1;j<input2_size;j++)
        {
            if(list[i].f_value>list[j.f_value])
            {
                temp1=list[i];
                list[i]=list[j];
                list[j]=temp1;
            }
        }
    }
    return list[0].position;

}

int main() {
int output = 0;
long ip1;
scanf("%ld", &ip1);
int ip2_size = 0;
int ip2_i;
scanf("%d\n", &ip2_size);
int ip2[ip2_size];
for(ip2_i = 0; ip2_i < ip2_size; ip2_i++) {
    int ip2_item;
    scanf("%d", &ip2_item);

    ip2[ip2_i] = ip2_item;
}
output = fnumber(ip1,ip2_size,ip2);
printf("%d\n", output);
return 0;
}

1 个答案:

答案 0 :(得分:2)

        if(list[i].f_value>list[j.f_value])

您将list[j].f_value拼错为list[j.f_value]

此外,memccpy应为memcpy

相关问题