안녕하세요
이 코드는 제가 짠 연결리스트 코드 일부 입니다. ( C언어로 짯습니다.)
이 연결리스트는 과일의 이름과 가격을 노드에 넣어서 과일 이름,가격
리스트를 만드는 것 인데요. MakeNode에서 과일의 이름과 가격을 매개 변수로
받고 노드에 복사하는 과정에서 과일의 이름은 문자열 이니까 strcpy 를 사용해서
과일의 이름을 노드에 복사하려고 했는데 이런 오류가 뜹니다.
경고 1 warning C4047: '함수' : 'rsize_t'의 간접 참조 수준이 'char *'과(와) 다릅니다.
경고 2 warning C4024: 'strcpy_s' : 형식 및 실제 매개 변수 2의 형식이 서로 다릅니다.
오류 3 error C2198: 'strcpy_s' : 호출에 매개 변수가 너무 적습니다.
4 IntelliSense: 함수 호출에 인수가 너무 적습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Item
{
char *name;
unsigned int price;
}Item;
typedef struct _Node
{
Item item;
struct _Node* next;
}Node;
Node* MakeNode(char *name, int price)
{
Node * newnode;
newnode = (Node*)malloc(sizeof(Node) * 1);
strcpy_s(newnode->item.name, name);
newnode->item.price = price;
newnode->next = NULL;
return newnode;
}
저 글삭튀 절대 안해요 ㅠㅠ 도와주세요 ㅠㅠ
포인터라그래 배열로해야댐
배열로 해야 한다는게 무엇이죠?? char* 말고 char[] 이렇게요?
냄세... 냄세가 난다 이기...
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );
strDestination 대상 문자열 버퍼의 위치입니다. numberOfElements 대상 문자열 버퍼의 크기입니다. strSource Null 종료 소스 문자열 버퍼입니다.
https://msdn.microsoft.com/ko-kr/library/td1esda9.aspx
char name[20]; 으로 선언하고 strcpy_s 의 두번째 인자에 sizeof(Item::name) 혹은 20 넣어라.
원래의 첫 번째 두 번째 인자 사이에 끼워 넣으란 소리야.