2
필자는 주 함수에서 while 루프를 사용합니다. 여기서 사용자는 문자열을 입력해야합니다.이 문자열은 일부 구조체의 텍스트 필드에 할당되는 함수로 전달됩니다.C : 이미 설정된 값을 변경하지 않고 동일한 char * []를 여러 번 사용하려면 어떻게해야합니까?
int main(void){
char text[255];
while(0) {
scanf("%s", text);
someFunction(text)
}
}
someFunction(char* text){
someStruct str = malloc (sizeof (str));
str.textfield = text;
}
는 지금, 나는 문자 배열 참조에 의해 전달되는 등, 따라서 someStruct의 생성 된 모든 인스턴스가 동일한 텍스트 필드, 스캔 및 "텍스트"로 저장된 즉, 마지막 하나를 가지고 끝날 것이라는 점을 알고있다. 그러나이 문제를 어떻게 피할 수 있습니까?
구조체 필드에'text'를 할당하면 단지 포인터 만 복사되기 때문에'text'의 후속 사용으로 덮어 쓰게됩니다. 대신 문자열의 복사본을 만들기 위해'strdup (text)'를 사용하십시오 (이것은 단지'malloc'을 호출 한 다음 그 문자열을 새로 할당 된 저장소에 복사합니다). –