2013-02-28 2 views
1
struct contact list[3]; 
int checknullarray() 
{ 
    for(int x=0;x<10;x++) 
    { 
     if(strlen(contact[x].name)==0) 
     { 
     return x; 
     break; 
     } 
    } 
} 

checknullarray에 문제가 있습니다. 내 유형 이름 (contact[x].name)은 허용되지 않습니다. 지금 어떻게해야합니까?구조가있는 Checknullarray

+1

글쎄,'나 strlen은()의''[CONST]을 기대하고있는 거랑 char *'인수. 'contact [x] .name'은 무엇입니까? 'contact'는 게시 한 짧은 코드에서 유효한 변수로 보이지 않습니다 (그것은 struct의 한 유형입니다). – twalberg

+3

'contact'는 구조체처럼 보입니다. 'list [x] .name'을 원하셨습니까? (하지만 0-9 범위의'x'는 유효하지 않습니다. 3 원소 만 있기 때문입니다) – Dukeling

+0

list [x] .name 뒤에는 오류가 있습니다 ... –

답변

1

가정하면 접촉은 그냥 재미 :-) 위해 (다른 솔루션이 좋은) char name[n];

struct contact list[3]; 

int checknullarray(void) /* void is a better option when no params */ 
{ 
    for (int x = 0; x < 10; x++) /* 3 or 10 ? I think you want x < 3 */ 
    { 
     /* 
     if(strlen(contact[x].name)==0) No need to strlen, you can check if name[0] == 0 
     */ 
     if (list[x].name[0] == '\0') 
     { 
       return x; 
      /* 
       break; why break if you return in previous line? 
      */ 
     } 
    } 
    return x; /* As suggested by qPCR4vir you need an alternative return */ 
} 
+1

및 다른 반환? – qPCR4vir

+0

@ qPCR4vir, 네가 맞아, 고마워. –

+0

사이클 후에 c 액세스 할 수 있습니까? ..sorry – qPCR4vir

1

같은 멤버

#include "contact.h" 
#define N 3 
struct contact list[N]; 

int checknullarray(void) 
{ 
    int x; 
    for (x = 0; x < N && *list[x].name; x++) ; 
    return x; 
} 
int main(void) 
{ 
    /* initialice list */ 
    int R; 
    R=checknullarray(); 
    if (R==N) /* No name in list =="" */; 
} 
+0

네, 좋은 예입니다. =) –

관련 문제