比方說,我有一個C字符串ch
與參數值對:字符串中的C字符串指針如何以空字符結尾?
#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
分「性別= M年齡= 30」 ch
,並使用相同的空終止爲ch
。 v
指向p
和中的「男性」我的問題是v
的空終止符存儲在?這是p
和ch
中的「男性」之後的空格,這裏的v
是指針,而不是緩衝區。
我現在明白我應該做一些類似'char v [5]'而不是'char * v'的東西。在'sscanf'後面打印'ch'時崩潰。沒有打印,它爲我想:) –