2016-08-11 2 views
0

링크 된 목록을 탐색 중입니다. 난 단지 strlen 연결된 목록의 각 노드를 찾고 싶어요.문자열 찾기 링크 된 목록의 한 노드의 길이

struct node 
    { 
     long HuffmanCodes; 
     struct node *next; 
    }; 
    struct node *head = NULL; 
    struct node *current = NULL; 

이제 이송과 링크리스트의 각 노드의 strlen을 찾는 : 여기

는 노드입니다.

int HuffmanCodeslength = 0; 
struct node *ptr = head; 
while(ptr != NULL) 
{ 
    HuffmanCodeslength = strlen(ptr->HuffmanCodes); 
    ptr = ptr->next; 
} 
ptr = head; 

나는

strlen(ptr->HuffmanCodes) 

가능 여부를 알 수 없습니다. 이 코드를 실행할 때. 그것은 런타임에 작동을 멈췄습니다. 어디서 실수입니까?

답변

0

잠깐 생각해 봅시다. strlen(ptr->HuffmanCodes)을 수행하고 ptr->HuffmanCodeslong 인 경우이 값을 int에 할당 할 수 있는지 묻는 중입니다. 왜 이걸 시험해보고 (그리고 경고에주의를 기울이십시오)? 당신은 (일반적으로 문자열을 사용하고 strlen)를 long의 문자열 길이를 찾기 위해 노력하고 기본적으로부터

#include <stdio.h> 
#include <string.h> 

int main(void) { 
    long myLongInt = 4873874; 
    printf("%zd\n", strlen(myLongInt)); 
    return 0; 
} 

:

우리가 간단한 프로그램을 말한다.

여기에 우리가 이것을 컴파일 할 때 발생하는 것입니다 : strlenconst char *을 기대하고 우리가 long을 통과하기 때문에

 
[email protected] Stack Overflow $ gcc dynamic_testing.c 
dynamic_testing.c:6:26: warning: incompatible integer to pointer conversion passing 'long' to parameter of type 'const char *' 
     [-Wint-conversion] 
    printf("%zd\n", strlen(myLongInt)); 
         ^~~~~~~~~ 
/usr/include/string.h:82:28: note: passing argument to parameter here 
size_t strlen(const char *); 
          ^
1 warning generated. 

는 분명히 불일치가있다. 너는 이것을 못해. 또한, 출력 :

 
[email protected] Stack Overflow $ ./a.out 
Segmentation fault: 11 
[email protected] Stack Overflow $ 

은 그럼 당신은 처음에이 세그먼트 오류를 ​​일으키는 int이 값을 할당하려고합니다.

아주 간단하게 : strlen(ptr->HuffmanCodes)은 법적 진술이 아닙니다. long int의 문자열 길이를 얻으려고하는 이유를 이해할 수 없습니다.

+0

sizeof(ptr->HuffmanCodes);가 대단히 감사 sizeof의 HuffmanCodes 사용을 찾을 수 있습니다. – Mohit

+0

@Mohit Glad 내가 도울 수있는 :-) – iRove

0

strlen()은 문자열/문자 배열에만 사용됩니다.

sizeof (struct node)를 사용해야하는 것보다 각 노드의 길이를 찾고 싶다면;

또는

관련 문제