C언어

오류(활성) E0137 식이 수정할 수 있는 lvalue여야 합니다. 해결은strcpy_s(head->name, "wife");

mcdn 2020. 4. 11. 01:12
반응형

 

오류(활성) E0137 식이 수정할 수 있는 lvalue여야 합니다. 

 

char 배열이든지 string 변수던지 문자열을 그대로 넣을 수 없다.

 

그냥 넣으려고 하면 "식이 수정할 수 있는 lvalue여야 합니다."라고 에러가 나온다.

 

위의 예에서 head -> name이 아무리 string 배열 넣는 자리여도 바로 집어넣을 수는 없다. 

 

이때 해결할 방법으로는 string 헤더 파일에서 제공하는 함수인 strcpy()를 이용해서 해결 할 수 있다.

 

 

strcpy 썼더니 에러나서 strcpy_s(~)로 바꿈

 

 

에러 없이 성공적으로 들어감 

 

#include <iostream>
#include <cstring>
using namespace std;

struct Node {
	char name[11];
	Node* love1;
	Node* love2;
};

int main() {
	Node* head = new Node();
	strcpy_s(head->name, "boss");
	head->love1 = new Node();
	head->love2 = new Node();
	strcpy_s(head->love1->name, "wife");
	strcpy_s(head->love2->name, "son");
	head->love1->love1 = head->love1;
	head->love1->love2 = head->love2;
	head->love2->love1 = new Node();
	head->love2->love2 = new Node();
	strcpy_s(head->love2->love1->name, "girlfriend");
	strcpy_s(head->love2->love2->name, "boyfriend");
	head->love2->love1->love1 = head->love2;
	head->love2->love2->love1 = head->love2->love1;
	head->love2->love1->love2 = head->love2->love2;

	cout << head->love2->love1->name <<endl;
	cout << head->love2->love2->name;


}

 

반응형