c - 低电平写入段错误

标签 c pointers file-io segmentation-fault

我创建了一个低级包装函数,用于在 C 中写入:

void MyWrite(int fd, unsigned char *buffer, unsigned int length){
    len=write(fd, buffer, len);
    printf("Output Length = %u \n", len);
}

现在当我发送以下内容时:

MyWrite(fileDescriptor, 0, 1);

导致段错误的命令

编辑:

我想写入 ASCII 值 0 而不是 ASCII 字符 48,即 '0'

最佳答案

是的,这很明显。您本质上缓冲区作为NULL (0)传递。

write()尝试从NULL地址读取数据时,最明显的副作用将是undefined behaviour .

您需要传递一个有效的指针,从中可以正确读取数据。当您编写包装器时,我建议为包装器内的传入指针添加 NULL 检查。

<小时/>

编辑:

如果要写入数字0,则需要传递包含该值的缓冲区。一些伪代码:

unsigned char val = 0;
MyWrite(fileDescriptor, &val, 1);

关于c - 低电平写入段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666499/

相关文章:

c - 不兼容的类型 struct* 和 struct,

c# - 在 Visual Studio 2013 中使用 Canvas

c - Xcode Exc_BAD_ACCESS

java - 从Android手机的SD卡中删除文件

android - 无法在 Android 应用程序中访问外部 SD 卡

c - git diff 查找 c 中的重构名称更改

c++ - 使用 libcurl 进行 APOP 身份验证

c - 我如何找到在 C 中应该是常量的变量?

c - C 中使用指针的 for 循环声明

c# - "Add to My Drive"按钮背后的代码