왜 첫 번째 코드는 작동하지만 두 번째 코드는 작동하지 않는지 알고 싶습니다. 문자열을 변수에 할당
#include <stdio.h>
#include <string.h>
int main()
{
char last[20], first[20], middle[20];
char pres[20] = "Adams, John Quincy";
char pres_copy[20];
strcpy(pres_copy, pres);
last = strtok(pres_copy, ", ");
printf("%s", last);
first = strtok(NULL, ", ");
printf("%s", first);
middle = strtok(NULL, ", ");
printf("%s", middle);
}
#include <stdio.h>
#include <string.h>
int main()
{
char *last, *first, *middle;
char pres[20] = "Adams, John Quincy";
char pres_copy[20];
strcpy(pres_copy, pres);
last = strtok(pres_copy, ", ");
printf("%s", last);
first = strtok(NULL, ", ");
printf("%s", first);
middle = strtok(NULL, ", ");
printf("%s", middle);
}
나는 배열 이름은 포인터와 같은 생각했다. 그러나 컴파일러는
'char [20]'
유형과
'char *'
형식이 호환되지 않았기 때문에 구별을하고 있습니다.
두 가지 데이터 유형이 다른 이유는 무엇입니까?
정확합니다. 배열에는 포인터가없는 동안 경계가 있습니다. –
배열은 포인터가 아닙니다. 그게 다야. – soon
이 링크도 확인하십시오. http://stackoverflow.com/questions/13667191/lvalue-required-error-when-trying-to-increment-array – VoidPointer