码:
char *test = (char *) malloc(sizeof(char)*25);
fgets(test, 24, stdin);
printf("%p \n", strchrnul(test, (int)('a')));
printf("%p \n", strchrnul(test, (int)('f')));
printf("%p \n", strchrnul(test, (int)('\\')));
printf("%p \n", strchrnul(test, (int)('a')));
printf("%p \n", test);
如下所示, strchrnul()
返回的地址被截断 . 为什么会这样?
INPUT: asd asd
OUTPUT: 0x6e880280
0x6e880288 //NULL Byte
0x6e880288 //NULL Byte
0x6e880280
0x55746e880280