在C中的read()是否读取空字符

M.D*_*Dev 0 c java-native-interface serial-port

我已经编写了从USB端口读取的程序(未连接任何东西)。从Java中我传递了int filedescriptor和字节数组,在jni中,我将字节数组转换为char *并使用了read()。

jbyte *bufferPtr2 = (*env)->GetByteArrayElements(env, buf, NULL);  
unsigned char* d_data2 = (unsigned char*)bufferPtr2;    
n = read(fd, d_data2, lengthOfArray); 
Run Code Online (Sandbox Code Playgroud)

执行后,n = 1,但d_data2为空。为什么是这样?read()是否将空字符读取为数据?

And*_*nle 5

根据POSIX文档read()

read()功能应尝试nbyte从与打开的文件描述符关联的文件中读取字节fildes到所指向的缓冲区中buf

读取的字节的实际值无关紧要。

所以是的,read()将读取NUL字节。