int main(int argc, char **argv){
char Q[MAXCHAR];
Q=argv[k+1];}
Q는 argv [k + 1]이 포인터 인 동안 배열입니다. argv [k + 1]의 내용을 Q로 어떻게 가져올 수 있습니까?argv [k]를 다른 문자열로 가져 오는 방법은 무엇입니까?
int main(int argc, char **argv){
char Q[MAXCHAR];
Q=argv[k+1];}
Q는 argv [k + 1]이 포인터 인 동안 배열입니다. argv [k + 1]의 내용을 Q로 어떻게 가져올 수 있습니까?argv [k]를 다른 문자열로 가져 오는 방법은 무엇입니까?
Q = argv[k+1]
을 직접 할당 할 수 없습니다. 배열 (Q[MAXCHAR]
)의 경우 arrayname (Q
)이 기본 주소입니다. 배열의 기본 주소는 변경할 수 없습니다. k = 0
를 가정하면,이 변수는 argv를 얻기 위해 다음 중 하나를 사용할 수있다 [1] Q.에 데이터
memmove(Q, argv[1], strlen(argv[1]) + 1);
또는
snprintf(Q, strlen(argv[1]) + 1, "%s", argv[1]);
또는
strncpy(Q, argv[1], strlen(argv[1]) + 1);
또는
memcpy(Q, argv[1], strlen(argv[1]) + 1);
또는
sprintf(Q, "%s", argv[1]);
또는 여기
strcpy(Q, argv[1]);
프로그램이며 사용 memmove를 출력입니다 :
#include <stdio.h>
#include <string.h>
#define MAXCHAR 20
int main(int argc, char **argv)
{
if (argc < 2) {
puts("Not enough arguments");
return -1;
}
char Q[MAXCHAR] = {0};
memmove(Q, argv[1], strlen(argv[1]) + 1);
puts(Q);
return 0;
}
출력 :
[email protected]:~$ ./a.out stackexchange
stackexchange
포인터와 배열이 실제로 같은 일이다 . strcpy 만 있으면된다. – Sulthan
@Sulthan 포인터와 배열이 동일하지 않습니다. 배열은 특정 상황에서 포인터로 붕괴합니다. 그게 다야. –
@underscore_d C의 배열이 시작 부분의 포인터로 식별되는 연속적인 메모리 조각이 아닌가? – Sulthan