2011-03-05 10 views
1
#include <iostream> 

using namespace std; 

int main() 
{ 
    struct list 
    { 
     char name[20]; 
     int age; 
     double height; 
     list *next; 
    }; 
    list *first, *temp, *temp2, *newlist1; 
    first->next = temp; 
    temp->next = temp2; 
    newlist1 = new list; 
    newlist1->name = "Steve"; 
    newlist1->age = 23; 
    newlist1->height = 2.3; 
    newlist1->next = temp2; 
    temp->next = newlist1; 
    newlist1->next = temp2; 
    temp->next = newlist1; 
    temp2 = newlist1->next; 
    temp2->next = newlist1->next; 
    delete temp2; 
    cout << " Name is: " << newlist1->name << " "; 
    cout << " Age is: " << newlist1->age << " "; 
    cout << " Height is: " << newlist1->height; 
} 

이름 값을 노드에 할당하는 방법은 무엇입니까? ... strcpy를 시도했지만 strcpy가 선언되지 않았다고 계속 말하고 있습니다. 누군가 제발 노드에 이름 [20] char 유형을 할당하는 방법에 대한 코드를 보여 주시겠습니까? 나는이 문제에 정말로 문제가있다 : (노드 이름을 지정하는 방법은 무엇입니까?

답변

1

strcpy는 표준 C 라이브러리의 일부이다. 컴파일러가 무엇인지 알기 위해서는 함수 선언을 #include해야한다. #include <cstring>

그러나 C++을 사용하고 있기 때문에 C++ 표준 문자열 클래스로 전환하는 것이 좋습니다. 훨씬 쉽고 안전하며 C++을 사용하는 것이 더 좋습니다. #include <string>을 사용하여 선언을 변경 한 다음 선언을 std::string name;

으로 변경하십시오. 곧 실행하게 될 또 다른 문제점은 하나의 목록 개체 (newlist1), b 예를 들어, first이 초기화되지 않은 경우 first->next을 참조합니다.

1

배열 char 배열을 사용하지 마십시오. 상단에 "#include <string>"를 추가하고 "string"대신 사용하면 원시 char 배열을 사용해야하는 경우, 당신이 잘못하고있는

#include <string> 
. 
. 
. 
struct list 
{ 
    string name; 
. 
. 
. 

. "strcpy"기능을 찾으십시오.

-1

과제 :

newlist1->name = "Steve"; 

가 잘못입니다. namechar[20]이고 char *이 아니기 때문에 이러한 종류의 지정이 작동하지 않습니다.

당신이 원하신다면 당신은 이것에 대한 strcpy을 사용할 수 있습니다

:

strcpy(newlist1->name, "Steve"); 

을 그것은 당신의 문제에 대한 간단한 해결책이다,하지만 당신은 더 배울 당신이 가능성이 나중에 이런 식으로이 일을하고 싶지 않아요 . (예 : strncpy과 같은 '안전한'방법 선택).

+0

... 주어진 정당한 이유없이 제기 된 질문에 실제로 응답하는 정답에 대한 하향식? 좋은. – KevenK

관련 문제