Read and write in c++

Read and write in c++

本文关键字:c++ in write and Read      更新时间:2023-10-16

我正在尝试使用系统调用read()和write()。下面的程序创建一个文件并向其中写入一些数据。代码如下:

int main()
{
    int fd;
        open("student",O_CREAT,(mode_t)0600);
    fd=open("student",O_WRONLY);
    char data[128]="Hi nikhil, How are u?";
    write(fd,data,128);
}

在执行上面的程序后,我得到了一个名为student的文件,大小为128字节。

int main()
{
    int fd=open("student",O_WRONLY);
    char data[128];
    read(fd,data,128);
    cout<<(char*)data<<endl;
}

但是我得到的输出是垃圾字符....为什么会这样呢?

我写了一个小程序来从文件中读取数据。她是密码。

但是输出

不要从您以O_WRONLY模式打开的文件中read !

帮你自己一个忙,总是检查IO函数的返回值

你也应该总是close文件描述符,你已经(成功地)open。可能不重要的代码像这样,但如果你养成了忘记这一点的习惯,你最终会写代码泄漏文件描述符,这是一件坏事。

您没有检查read()是否返回错误。您应该这样做,因为您的问题中的代码可能就是这种情况。

由于首先打开的是文件write-only,因此对其调用read()将导致错误。您应该打开文件以供阅读:

char data[128];
int fd = open("student", O_RDONLY);
if (fd != -1) {
    if (read(fd, data, sizeof(data)) != -1) {
        // Process data...
    }
    close(fd);
}

首先,您的数据不是128字节。你的数据是字符串:"Hi nikhil, How are u?",少于128字节。但是你从数组写入128字节到文件。初始字符串之后的所有内容都将是内存中的随机垃圾,因为char数组只初始化了21字节的数据。所以接下来的107字节是垃圾