의 내가 매개 변수 - 값 쌍을 가진 C 문자열 ch
있다고 가정 해 봅시다 :문자열 내의 C 문자열 포인터가 null로 종료되는 방법은 무엇입니까?
#include <string.h>
char ch[] = "name=John sex=male age=30"; // null-terminated C string
char *p, *v; // pointers to parameter and value
p = strstr(ch, "sex="); // p now points to "sex=male age=30"
sscanf(p, "sex=%s", v); // get the value for sex
printf("sex = %s\n", v); // gives "male", works as expected
printf("length of v is %i\n", strlen(v)); // gives 4
printf("is v null-terminated? %i\n", (*(v+4)=='\0')); // gives 1
나의 이해는 p
점 ch
에서 "섹스 = M 나이 = 30",에가와 ch
같은 null 종결을 사용한다는 것입니다. v
은 p
에서 "male"을 가리키고 은 내 질문에 v
의 널 종결자를 저장합니다? p
과 ch
에서 "male"다음에 공백이 있으며 여기에서 v
은 버퍼가 아니라 포인터입니다.
이제 'char * v'보다는'char v [5]'와 같은 것을해야한다는 것을 이해합니다. 'sscanf' 다음에'ch'를 출력 할 때 충돌이 발생합니다. 인쇄하지 않고, 나를 위해 일한 생각 :) –