그래서 기본적으로 strcpy는 첫 번째 인수에 두 번째 인수의 주소를 할당하지만 첫 번째 인수로 배열에 대해 어떻게 처리합니까? 내 프로그램 에서처럼, 나는 배열의 주소를 변경하려고했지만 불행히도 그것은 컴파일되지 않을 것이다. 그래서 나는 capitalize의 반환 값을 할당하기 위해 문자 포인터 변수를 만들어야 만했다. 내가 오해하고 있는게 있니?배열의 주소를 변경할 수 없을 때 strcpy()가 문자열을 배열에 복사하는 방법은 무엇입니까?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char string[20];
char *Capitalize(char *str)
{
int i;
char *temp;
temp = malloc(sizeof(char)*(int)(strlen(str)+1));
for(i = 0;i < strlen(str);i++)
{
if(*(str+i) >= 'a' && *(str+i)<= 'z')
*(temp+i) = *(str+i) - 32;
else
*(temp+i) = *(str+i);
}
*(temp+i) = '\0';
return temp;
}
int main(void)
{
string word;
printf("Enter word to capitalize: ");
scanf("%19s",word);
word = Capitalize(word);
printf("%s",word);
return 0;
}
없이 그것을하지 않습니다, 그것은 내용을 복사 "의 strcpy는 1 일에 제 2 인수의 주소를 할당");
희망 나는 명확 내 설명과 함께 더 혼란하지 않았습니다. – Mat
strcpy()에 대한 예제 코드가 없는데 왜 그것을 묻는거야? – Glenn
@Glenn word = Capitalize (word) 이것은 에러를 발생시키기 때문에 strcpy()가 배열에 두 번째 인수의 주소를 할당하는 방법을 궁금해했습니다. 나는 현을 연습하고있어서 갑자기 그 생각을 숙고했다. – latenightcode