2017-10-09 38 views
-1

我想創建一個函數內部的結構,我正在嘗試使用它。但是,當我比較結構中的兩個值時,我收到以下消息:如何在C中定義和使用函數結構?

「C:\ Users \ hp \ Desktop \ prgm \ cap.c ||在函數'fnumber'中:| C:\ Users \ hp \ Desktop \ prgm \ cap.c |

72 | error:成員'f_value'的請求不是結構或聯合| || ===構建失敗:1個錯誤,0個警告(s )(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; 
} 
+0

可能這裏是你的錯誤,對嗎? 'list [i] .f_value> list [j.f_value]' - >應該是'list [i] .f_value> list [j] .f_value' –

+0

哦,我明白了... thanx。我應該仔細地檢查類型錯誤。 –

+0

修復這些問題後,程序崩潰了,有什麼想法? –

回答

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

你拼寫錯誤list[j].f_value as list[j.f_value]。另外,memccpy應該是memcpy

+0

修復這些問題後,程序崩潰了,有什麼想法嗎?請幫忙@melpomene –

+0

@SameerRezaKhan https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – melpomene

相關問題